2014-09-04 89 views
1

我新手警予訪問這些價值觀,我想知道:如何加入CDbCriteria 3個表和CGridView

如何CDbCriteria JOIN 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 

我只需要JOIN THES e三張桌子,並在CGridView上顯示。 如果您有任何教程,請提供關於此的說明。

請幫忙。 謝謝。

+0

您需要定義模型中的關係,並使用'CDbCriteria的with'領域。 – 2014-09-04 12:34:56

+0

請參閱[下面的鏈接](http://stackoverflow.com/a/14774541/1746258),這裏是[doc](http://www.yiiframework.com/doc/guide/1.1/en/database.arr#關係查詢選項)在這裏你可以閱讀如何將'sql query'轉換爲'yii'代碼 – 2016-03-11 08:17:55

回答

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

CDbCriteria具有join屬性,您可以在其中使用JOIN的SQL代碼。

1

使用關係和訪問列使用像這樣的cgridview PARAMS

'columns' => array(
    array('name' => 'columnname', 
      'value' => 'isset($data->relationname) ? $data->relationname->name : ""') 
) 

就是這樣。

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