请帮助我在使用sqldataprovider时不知道如何获取关系表。任何人都懂得如何使用关系模型?
$model = new Finalresult();
$searchModel = new FinalresultSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT finalresult.bib,
finalresult.series_id,
finalresult.category_id,
GROUP_CONCAT(DISTINCT finalresult.point ORDER BY series.serie_seri_no DESC) AS seriPoint
FROM finalresult, series GROUP BY finalresult.bib',
'key' => 'bib',
]);
我正在尝试获取关系表:
'attribute'=>'category_id',
'width'=>'300px',
'value'=>function ($model, $key, $index, $widget) {
return $model->category->category_name;
},
然后尝试非对象
答案 0 :(得分:2)
您不能使用与SqlDataProvider
的关系,因为每个结果都会显示为数组,例如:
[
'id' => 1,
'name' => 'Some name',
'category_id' => 1,
],
例如,您可以将category_id
作为`$ model ['category_id']进行访问。
SqlDataProvider
适用于非常复杂的查询,您的查询可以轻松编写为ActiveQuery
,您可以使用ActiveDataProvider
并获得所有优势(关系等)。< / p>
您可以按ID找到类别,但它会被延迟加载,这意味着查询量乘以行数。
使用ActiveDataProvider
和关系,您可以使用预先加载并减少查询量。阅读official docs中的更多内容。
答案 1 :(得分:0)
Grid Columns example in documentation
尝试将“值”更改为
'value'=> function($data) {
return $data['category']['category_name'];
}