سلام توی جدول orderproducts یک فیلد quantity داریم که تعداد محصول خریداری شدست موقع نمایش با relations نمیشه بهش دسترسی داشته باشیم؟
رتبه موضوع:
استفاده از جدول واسط orderproducts (حل شد)
|
04-04-1394، 09:02 ب.ظ
چرا میتونید. کافیه Relation مربوط به جدول واسط رو دستی به مدلتون اضافه کنید. هم به مدل Orders و هم به مدل Products باید بصورت دستی ریلیشن Orderproducts رو از نوع HAS_MANY اضافه کنید. در حالت عادی و با Gii چون این جدول بعنوان واسطه ارتباط N به N بین سفارشها و محصولات عمل میکنه، ریلیشن براش ساخته نمیشه.
تشکر شده توسط: hamid
04-04-1394، 11:45 ب.ظ
توی مدل Orderproducts باید نوشته بشه یا توی Orders و Products ؟
05-04-1394، 03:03 ق.ظ
اینو تو هر دو تا نوشتم نمیشه
'orderproducts'=> array(self::HAS_MANY,'Orderproducts','id'),
05-04-1394، 06:06 ق.ظ
نه دیگه، باید اینطوری بنویسید:
توی Products: 'orderproducts' => array(self::HAS_MANY, 'Orderproducts', 'product_id'), توی Orders: 'orderproducts' => array(self::HAS_MANY, 'Orderproducts', 'order_id'), تشکر شده توسط: hamid
05-04-1394، 06:09 ق.ظ
توی relationها اسم کلید خارجی رو مینویسیم. کلید اصلی که همیشه id هست خودش و ما باید کلید خارجی رو برای ارتباط معرفی کنیم.
تشکر شده توسط: hamid
05-04-1394، 02:46 ب.ظ
تشکر از لطف شما
داخل حلقه ای که شما اینو نوشتید. <?php $op = Orderproducts::model()->findByAttributes(array('order_id' => $model->id, 'product_id' => $orderproduct->id)); ?> <p><?php echo $op->color->name; ?></p>میشه بجاش اینو نوشت؟ <?php echo $model->orderproducts[$i]->color->name; ?>
05-04-1394، 02:49 ب.ظ
بله اگه محصولات رو با حلقه for نمایش میدین و i$ متغیر حلقه است، میتونید انجام بدین ولی حدس میزنم نتایج اشتراه بشه. بهتره به همون شکل کار کنید.
05-04-1394، 02:49 ب.ظ
یادم رفت بگم مشکل با تیم ویور حل شد. علت خطا این بود که orderproducts آرایه بود و مستقیماً نمیشد نمایش بدیم و باید با حلقه پیمایش میشد.
تشکر شده توسط: hamid
|
|
کاربران در حال بازدید این موضوع: 7 مهمان