PDA

View Full Version : نمایش دیتا از دو جدول در CGridView (حل شد)



dousti_design
جمعه 04 بهمن 1392, 01:38 صبح
با درود.
دوستان عزیز
ما دو تا جدول داریم که با کلید به هم وصل هستند(یک به چند) حالا میخوایم وقتی که با CGridView دیتا نمایش میدیم بجای شماره ID فیلد مورد نظر، بره و یک فیلد دیگش رو(معمولا نام) برامون بیاره بذاره بجای ID
چکار باید کرد؟
من توی مدل ارتباط رو اینجوری تعریف کردم:


public function relations()
{
return array(
'ref_users' => array(self::BELONGS_TO, 'tbl_users', 'id')
);
}

و این هم view و CGridView:


$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'comment-form-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
/*'filter' => CHtml::activeTextField($model, 'ref_posts'),*/
'columns'=>array(
array('name'=>'ref_users',
'header'=> 'کاربر',
'value'=> '$data->tbl_users->model',
),
...
array(
'class'=>'CButtonColumn',
),
),
));

MMSHFE
جمعه 04 بهمن 1392, 02:15 صبح
میشه یکم بیشتر توضیح بدین دقیقاً میخواین چه کاری انجام بدین و این کدها رو توی کدوم فایلها نوشتین؟

mahmod2000
جمعه 04 بهمن 1392, 08:52 صبح
شما الان ازجدولی که خواستید ریلیشن گرفتید و درسته
حالا توی ستونت value رو هم درست رفتی
به جای model که نوشتی اسم فیلدتو بنویس
از جدول TBL_USER که ریلیشن گرفتی میتونی دسترسی به فیلدهای جدولش دشه باشی

MMSHFE
جمعه 04 بهمن 1392, 10:31 صبح
من با این کد توی ویو issues/view.php توی پروژه TrackStar (توی فیلم آموزشی) جواب گرفتم. برحسب اسامی جداول خودتون اصلاحش کنید:


$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'comment-form-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array('name'=>'owner_id',
'header'=> 'کاربر',
'value'=> '$data->owner->username',
),
array(
'class'=>'CButtonColumn',
),
),
));

dousti_design
جمعه 04 بهمن 1392, 12:13 عصر
شما الان ازجدولی که خواستید ریلیشن گرفتید و درسته
حالا توی ستونت value رو هم درست رفتی
به جای model که نوشتی اسم فیلدتو بنویس
از جدول TBL_USER که ریلیشن گرفتی میتونی دسترسی به فیلدهای جدولش دشه باشی

اتفاقا همین کار رو کردم:

'value'=> '$data->tbl_users->name',
اما میگه :

Property "commentForm.tbl_users" is not defined.
.

من با این کد توی ویو issues/view.php توی پروژه TrackStar (توی فیلم آموزشی) جواب گرفتم. برحسب اسامی جداول خودتون اصلاحش کنید:


$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'comment-form-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array('name'=>'owner_id',
'header'=> 'کاربر',
'value'=> '$data->owner->username',
),
array(
'class'=>'CButtonColumn',
),
),
));

الان شما نام جدولتون owner و نام فیلد username هست؟ مال منم که همینجوریه که پس چرا خطا میده؟
owner رو توی مدل جایی تعریف نکردید؟

MMSHFE
جمعه 04 بهمن 1392, 13:48 عصر
نه اسم جدولمtbl_users هست و owner اسم relation هست که به اون جدول زدم. طبق فیلم آموزشی مدل Issue رو چک کنید.

dousti_design
جمعه 04 بهمن 1392, 14:35 عصر
نه اسم جدولمtbl_users هست و owner اسم relation هست که به اون جدول زدم. طبق فیلم آموزشی مدل Issue رو چک کنید.
ممنونم. من فیلم آموزشی رو ندارم ولی اسم relation رو که زدم درست شد. سپاس