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

نسخه‌ی کامل: استفاده از جدول واسط orderproducts (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام توی جدول orderproducts یک فیلد quantity داریم که تعداد محصول خریداری شدست موقع نمایش با relations نمیشه بهش دسترسی داشته باشیم؟
چرا میتونید. کافیه Relation مربوط به جدول واسط رو دستی به مدلتون اضافه کنید. هم به مدل Orders و هم به مدل Products باید بصورت دستی ریلیشن Orderproducts رو از نوع HAS_MANY اضافه کنید. در حالت عادی و با Gii چون این جدول بعنوان واسطه ارتباط N به N بین سفارشها و محصولات عمل میکنه، ریلیشن براش ساخته نمیشه.
توی مدل Orderproducts باید نوشته بشه یا توی Orders و Products ؟
توی اون دوتای اصلی.
اینو تو هر دو تا نوشتم نمیشه
'orderproducts'=> array(self::HAS_MANY,'Orderproducts','id'),
نه دیگه، باید اینطوری بنویسید:

توی Products:
'orderproducts' => array(self::HAS_MANY, 'Orderproducts', 'product_id'),

توی Orders:
'orderproducts' => array(self::HAS_MANY, 'Orderproducts', 'order_id'),
توی relationها اسم کلید خارجی رو مینویسیم. کلید اصلی که همیشه id هست خودش و ما باید کلید خارجی رو برای ارتباط معرفی کنیم.
نشد.
نقل قول:Error 500
Trying to get property of non-object
توی پیام خصوصی تیم ویور بدین ببینم مشکل چیه.
تشکر از لطف شما
داخل حلقه ای که شما اینو نوشتید.

<?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; ?>
بله اگه محصولات رو با حلقه for نمایش میدین و i$ متغیر حلقه است، میتونید انجام بدین ولی حدس میزنم نتایج اشتراه بشه. بهتره به همون شکل کار کنید.
یادم رفت بگم مشکل با تیم ویور حل شد. علت خطا این بود که orderproducts آرایه بود و مستقیماً نمیشد نمایش بدیم و باید با حلقه پیمایش میشد.
i$ رو قبل از foreach تعریف کردم.چشم با حالت قبل کار میکنم.