私のコントローラー
$criteria = new CDbCriteria();
$criteria -> select = 't.*,b.*';
$criteria -> join = 'INNER JOIN tbl_b b on b.b_id = t.id ';
$criteria -> join .= 'INNER JOIN tbl_c c on c.id = b.c_id';
$criteria -> condition = 'c.id = :cid';
$criteria -> params = array(':cid' => 1);
$dataProvider = new CActiveDataProvider('tbl_a',array(
'criteria' => $criteria
));
$this->render('view',array('dataProvider' => $dataProvider));
私の見解
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'my-grid',
'dataProvider' => $dataProvider,
'columns' => array(
'name',
'description',
array(
'header' => 'Column from tbl_b',
'value' => ''
),
array(
'class'=>'CButtonColumn',
'template' => '{view}'
), ),));
私の質問は:から列の値を表示するにはどうすればよいtbl_b
ですか。でdataprovider
、を指定したので、すべてのレコードを選択したにもかかわらず、からのみtbl_a
データを取得しています。tbl_a
tbl_b
tbl_b
私が学んだことから、それはとして表示されるはず$data -> tbl_b -> col_b
です。しかし、これはtbl_a.tbl_b
定義されていないのでエラーを与えています。何が問題なのかしら?
Is it something regarding the relation?
tbl_a
とはを介しtbl_c
て関連付けられています。つまり、とのプライマリIDをリンクする2つの列があります。MANY_MANY
tbl_b
tbl_b
tbl_a
tbl_c
注:名前と説明はtbl_aからのものであり、表示されます。
提案してください!