我是yii的新手,我想知道:
如何加入 CDbCriteria 中的3个表,并从 CGridView
中访问这些值我的表:
invoice (IID,date,cusID) PK = IID
invoiceItem (invIID, IID, itemID, date, cusID) PK= invIID FK = IID
item (itemID, name, price, cat) PK = itemID
我只需加入这三个表并在 CGridView 上显示。 如果您有任何教程,请提供相关说明。
请帮忙。 谢谢。
答案 0 :(得分:1)
尝试这样做创建关系 在项模型
中'invoices' => array(self::HAS_MANY, 'invoiceItem', 'itemID'),
在 invoiceItem 模型
中'invoice' => array(self::BELONGS_TO, 'invoice', 'IID'),
然后,您可以在视图中的任何位置使用它,如下所示
$item->invoices; //returns array of invoiceItems objects
$item->invoices['index']->invoice; //return invoice object for that item.
这将生成商品模型的数据,用于发票,反向关系。
答案 1 :(得分:1)
CDbCriteria具有join
属性,您可以在其中使用SQL代码进行JOIN。
答案 2 :(得分:1)
在cgridview params中使用关系和访问列使用,如下所示
'columns' => array(
array('name' => 'columnname',
'value' => 'isset($data->relationname) ? $data->relationname->name : ""' )
)
是的。
答案 3 :(得分:0)
尝试使用符合条件的代码
$criteria->select = 't.*'; //specify list of columns you need
$criteria->join = 'INNER JOIN invoiceItem on t.invIID=invoiceItem.invIID INNER JOIN item on invoiceItem.itemID = item.itemID