PDA

View Full Version : مشکل با ارتباطات در CListView



barname_newis
پنج شنبه 05 تیر 1393, 17:52 عصر
سلام
من برای صفحات داخلی هر شاخه (category) میخوام لیست تمام محصولات اون شاخه رو نمایش بدم مثلا اگه کاربر شاخه تبلت رو انتخاب کرد باید لیست تمام تبلت ها رو از بانک خونده بشه و نمایش داده بشه
ارتباطات جداول هم به این صورته :
جدول products_has_product_categories به صورت جدول میانی کار میکنه و آی دی محصول و شاخه رو ثبت میکنه
ارتباطات در مدل های yii :
مدل categories :



public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'productCategoryParent' => array(self::BELONGS_TO, 'ProductCategories', 'product_category_parent_id'),
'productCategories' => array(self::HAS_MANY, 'ProductCategories', 'product_category_parent_id'),
'products' => array(self::MANY_MANY, 'Products', 'products_has_product_categories(product_categorie s_product_category_id, products_product_id)'),
);
}


مدل products :


return array(
'comments' => array(self::HAS_MANY, 'Comments', 'products_product_id'),
'productFeatures' => array(self::MANY_MANY, 'ProductFeatures', 'products_has_product_features(products_product_id , product_features_product_feature_id)'),
'productImagesProductImage' => array(self::BELONGS_TO, 'ProductImages', 'product_images_product_image_id'),
'productCategories' => array(self::MANY_MANY, 'ProductCategories', 'products_has_product_categories(products_product_ id, product_categories_product_category_id)'),
'commentCount'=>array(self::STAT,'Comments','products_product_id') ,
);


حالا هم از از طریق actionView کنترلر productCategories به این صورت داده ها رو از بانک میخونم :


$dataProvider = new CActiveDataProvider('ProductCategories',array(
'criteria'=>array(
'condition'=>"product_category_id=$id",
),
));
$this->render('view',array(
'dataProvider'=>$dataProvider,
'model'=>$model,
));


view.php :


$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
));


اما تو فایل _view.php با ارتباطات مشکل دارم . وقتی به این صورت کد میزنم مشکلی نداره و همه محصولات رو میخونه :

$data->products
ولی وقتی میخوام به این صورت چاپ کنم مقادیر تمام فیلد هام null برگردونده میشه ! :

$data->products->product_id
ممنون میشم راهنمایی کنید

code.zan
پنج شنبه 05 تیر 1393, 18:27 عصر
ببین data->products$ یک object بر میگردونه به همین خاطر نمی تونی اینجوری data->products->product_id$ بهش دسترسی داشته باشی .
در ضمن ارتباط جدول هاتم چند به چنده پس ممکنه چند تا جواب برگردونه مثل کد زیر کار کنی به نتیجه می رسی (تو view_ بنویس ) :

<?php
foreach($data->products as $record) {
echo $ids[] = $record->product_id;
}
?>