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
ممنون می شم راهنمایی کنید
من سه تا جدول به شکل زیر دارم:
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
ممنون می شم راهنمایی کنید