ورود

View Full Version : مشکل در sort گریدویو



desatir7316
دوشنبه 14 اردیبهشت 1394, 21:09 عصر
سلام دوستان
من سه تا جدول به شکل زیر دارم:


ads(id, user_id)
tender(id,user_id, ads_id)
user(id)


اکشن index توی TenderController رو به این شکل تغییر دادم:


$dataProvider = new ActiveDataProvider([
'query' => Tender::find()->joinWith(['user', 'ads']),
]);



$dataProvider->setSort([
'attributes' =>
array_merge(
$dataProvider->sort->attributes, [
'user.name',
'ads.name',
'ads.user.name',
]),
]);

return $this->render('index', [
'dataProvider' => $dataProvider,
]);


گرید ویو هم به این شکل نمایش دادم:


<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],

'user.name',
'ads.name',
'amount',
'ads.user.name',

['class' => 'yii\grid\ActionColumn'],
],
]); ?>


تمام اطلاعات به درستی لود می شن و sort ها هم عمل می کنن به جز موقع ایکه روی ads.user.name کلیک می کنم، این پیغام رو میده:



Column not found: 1054 Unknown column 'ads.user.name' in 'order clause'
The SQL being executed was: SELECT `tender`.* FROM `tender` LEFT JOIN `user` ON `tender`.`user_id` = `user`.`id` LEFT JOIN `ads` ON `tender`.`ads_id` = `ads`.`id` ORDER BY `ads`.`user`.`name` LIMIT 20



ممنون می شم راهنمایی کنید

mostafa_shoakry
چهارشنبه 16 اردیبهشت 1394, 20:27 عصر
ads.user.name

تو جدول user فیلدی به نام name وجود نداره واسه اون خطا می ده

desatir7316
پنج شنبه 17 اردیبهشت 1394, 01:04 صبح
داره، این جداول با هم در ارتباط هستن. اتفاقا توی گریدویو مقدار خود user.name هم نمایش دادم