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));

Но перед этим убедитесь, что у вас есть правильные отношения, определенные для этих двух моделей.

Другие вопросы по тегам