Yii CActiveDataProvider с () и присоединиться
Я хочу иметь отдельную строку для каждого связанного объекта в CGridView.
ModelB имеет modelAId, поэтому это отношение HAS_MANY.
Следующий запрос возвращает то, что я пытаюсь получить:
select * from modelA a
join modelB b on b.modelAId = a.id
Здесь я получаю отдельные строки для каждой соответствующей строки modelB, записи из modelA могут дублироваться.
Однако следующий поставщик не возвращает ожидаемые записи, как я могу использовать это в CActiveDataProvider
$provider = new CActiveDataProvider ("ModelA", array ("criteria" => array (
"with" => array("ModelB")
)
));
Если я добавляю join "join" => " join modelB b на b.modelAId = t.id" и удаляю с помощью (), это дает правильные записи, но когда я включаю с (), это дает только записи modelA.
Как правильно получить данные из ModelA, ВКЛЮЧАЯ отдельные строки для отношения ModelB?
1 ответ
Вы можете использовать cDbCriteria для этого в очень простой способ
$criteria=new cDbCriteria();
$criteria->with=array('ToModelB'); //Here ToModelB is defined relation in ModelA to ModelB
$dataProvider=new CActiveDataProvider('ModelA',array('criteria'=>$criteria));
Но перед этим убедитесь, что у вас есть правильные отношения, определенные для этих двух моделей.