как использовать таблицу отношений при использовании sqldataprovider

пожалуйста, помогите, я не знаю, как получить таблицу отношений при использовании 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;
},

затем пытаться не возражать


person Stfvns    schedule 25.01.2016    source источник
comment
показать FinalResult модель. это gridview или detailView?   -  person Insane Skull    schedule 25.01.2016
comment
См.: stackoverflow.com/questions/29945259/   -  person Insane Skull    schedule 25.01.2016


Ответы (2)


Вы не можете использовать отношения с SqlDataProvider, потому что каждый отдельный результат будет представлен в виде массива, например:

[
    'id' => 1,
    'name' => 'Some name',
    'category_id' => 1,
],

Например, вы можете получить доступ к category_id как `$model['category_id'].

SqlDataProvider предназначен для очень сложных запросов, ваш запрос можно легко записать как ActiveQuery, и вы можете использовать ActiveDataProvider и получить все преимущества этого (отношения и т. д.).

Вы можете найти категорию по идентификатору, но она будет загружаться лениво, что означает, что количество запросов умножается на количество строк.

С ActiveDataProvider и отношениями вы можете использовать быструю загрузку и уменьшить количество запросов. Подробнее читайте в официальной документации. .

person arogachev    schedule 25.01.2016

Пример столбцов сетки в документации

попробуйте изменить "значение" на

'value'=> function($data) { 
     return $data['category']['category_name'];
}
person Hanafi    schedule 25.01.2016