1

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 on b.modelAId = t.id" を追加して with() を削除すると正しいレコードが返されますが、with() を含めると modelA レコードのみが返されます。

ModelB 関係の個別の行を含む ModelA からデータを取得する正しい方法は何ですか?

4

1 に答える 1

0

究極の簡単な方法で cDbCriteriaを使用できます

$criteria=new cDbCriteria();
$criteria->with=array('ToModelB'); //Here ToModelB is defined relation in ModelA to ModelB
$dataProvider=new CActiveDataProvider('ModelA',array('criteria'=>$criteria));

ただし、その前に、これら 2 つのモデルに適切な関係が定義されていることを確認してください。

于 2014-08-18T10:00:00.820 に答える