Yii2 使用sqldataprovider时如何使用关系表

Yii2 使用sqldataprovider时如何使用关系表,yii2,dataprovider,Yii2,Dataprovider,请帮助我在使用sqldataprovider时不知道如何获取关系表。有人知道如何使用关系模型吗 $model = new Finalresult(); $searchModel = new FinalresultSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $dataProvider = new SqlDataProvider([ 'sql' =>

请帮助我在使用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;
},

然后尝试非对象

您不能使用与
SqlDataProvider
的关系,因为每个结果都将显示为数组,例如:

[
    'id' => 1,
    'name' => 'Some name',
    'category_id' => 1,
],
例如,您可以作为“$model['category\u id]”访问
category\u id

SqlDataProvider
用于非常复杂的查询,您的查询可以很容易地写成
ActiveQuery
,您可以使用
ActiveDataProvider
并从中获得所有好处(关系等)

您可以按id查找类别,但它将被延迟加载,这意味着查询量将乘以行数

使用
ActiveDataProvider
和关系,您可以使用即时加载并减少查询量。阅读更多信息。

尝试将“值”更改为


显示
FinalResult
模型。它是一个
网格视图
详细视图
?请参阅:
'value'=> function($data) { 
     return $data['category']['category_name'];
}