تالار گفتمان nCIS.ir

نسخه‌ی کامل: نحوه استخراج اطلاعات جدولی که با جدول اصلی ریلیشن داره
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام و درود

من یه جدول محصولات دارم که محصولاتی که قراره به صورت پستی ارسال بشن رو توی اون ذخیره میکنم ..
مثلا یک بسته ی آموزشی ..
حالا این بسته ممکنه بخوام بصورت فروش از طریق دانلود هم بگذارمش ..
برای همین یه جدول ساختم که اطلاعات بسته مخصوص دانلود مث قیمت و حجم و این ها رو داره ..
یه فیلد به نام product_id هم دارم که وصل میشه به جدول محصولات و فیلد ID ... برای این که مشخص کنم این بسته ی دانلودی مال کدوم محصول هست و از طریق اون عنوان و توضیحاتش رو از جدول محصولات بخونم ..

حالا مشکلم اینه که نمیدونم توی مدل و کنترلر چه کدی رو بنویسم که این کار رو انجام بده .. Huh
خوب شما ارتباط بین جداول رو که با Gii ساخته میشه دارین؟ فرض کنیم اسم مدل محصولات، Products هست و اسم مدل دانلود هم Downloads

حالا شما توی سناریوی خودتون، ارتباط بین این دو مدل رو 1 به 1 گذاشتین یا 1 به N ؟
اسم مدل ها دقیقا همینه ..
ارتباط بین جداول رو ندارم ، زمانی که مدل رو با Gii ساختم ارتباط ها رو تیک زدم که بسازه ولی نساخت!
ولی ارتباطشون باید 1 به 1 باشه .. چون هر محصول یه دونه بسته ی مخصوص دانلود داره ..
حتماً توی دیتایبس Relation نساخته بودین که ارتباطها رو نساخته. اگه ارتباط 1 به 1 هست و تعداد فیلدها زیاد نیست، بیارین توی یه جدول و Nullable بگذارین.
توی دیتابیس هم ارتباط ها رو ساختم ..  حالا اگه فیلدها رو توی جدول اصلی هم بزارم ، یه جدول دیگه دارم که اطلاعات هر قسمتی که گذاشته میشه برای دانلود رو ذخیره میکنه ..
دیتابیس رو آپلود کردم .. دانلود کن ببین
همینجا ضمیمه کنید فایلها رو. ایندفعه خودم انجام دادم.
(07-04-1394، 07:28 ب.ظ)ADMIN نوشته: [ -> ]همینجا ضمیمه کنید فایلها رو. ایندفعه خودم انجام دادم.

چشم ...
فایلی که گذاشتم لطفا بررسی کن ببین توی ارتباط ها اشتباهی هست یا نه ؟!
نگاش کردم. لطفاً تحلیل فارسی خودتون رو هم از موجودیتها بنویسید. منظورم اینه که سناریوی کار رو تعریف کنید. اینکه هر جدول چه کاری انجام میده. یا اصلاً قراره سیستم چطوری کار کنه. تا وقتی سناریوی پروژه رو ندونیم، نمیتونیم بگیم طراحی دیتابیس خوبه یا نه چون هر Schema برای سناریوی خاصی ممکنه خوب یا بد باشه.
خب در حال حاضر مشکل من اینه که چجوری به فیلد های جدول زیر مجموعه ی یک جدول دیگه توی Yii دسترسی پیدا کنم ... با استفاده از اون رابطه ای که بینشون هست .. حالا فرض میگیریم رابطه 1 به 1 هست و اصن مال این پروژه هم نیست .. کلا این کار رو چجوری میتونم انجام بدم ؟
حالا مستندات و تحلیل فارسی که گفتید جزء مسائل خصوصی پروژه ی بنده هست که ترجیح میدم اینجا صحبتی ازش نشه...
خوب فرض کنید یه Relation دارین به اسم download توی مدل Products. کافیه برای خوندن فیلد link از رکورد download مربوط به یه محصول اینطوری کار کنید:
$product->download->link
علت اینکه چرا Gii ریلیشنها رو نمیساخت توی تیم ویور مشخص شد. برای اطلاع کسانی که مشکل مشابه دارن میگم. ابتدا جداول پیشوند داشتن و بخاطر همین با tablePrefix توی تنظیمات دیتابیس، پیشوند رو مشخص کرده بودن. بعداً پیشوند حذف شده بود ولی Gii همچنان داشت اطلاعات رو با پیشوند میخوند و درنتیجه چون جداول رو پیدا نمیکرد، ارتباطها رو نمیساخت. با وجود اینکه توی تنظیمات دیتابیس توی فایل تنظیمات، پیشوند حذف شده بود ولی Gii بازم دنبال پسوند بود. علتش اینه که اولین بار که Gii رو بارگذاری میکنید، تنظیمات دیتابیس رو توی پوشه protected/runtime و داخل یه پوشه به اسم gii که در ادامه نسخه فریمورک اومده، ذخیره میکنه. اگه میخواین تنظیمات جدید خونده بشه، باید این پوشه رو حذف کنید تا Gii دوباره فایل تنظیمات رو بخونه و از تغییرات مطلع بشه.