2014-09-04 2 views
1

Я новичок в Yii, и я хочу знать:Как присоединиться к 3 таблицы в CDbCriteria и получить доступ к этим значения из CGridView

Как РЕГИСТРИРУЙТЕСЬ 3 таблицы в CDbCriteria и получить доступ к этим значения из CGridView

Мой стол:

invoice  (IID,date,cusID) PK = IID 
invoiceItem (invIID, IID, itemID, date, cusID) PK= invIID FK = IID 
item  (itemID, name, price, cat) PK = itemID 

мне просто нужно РЕГИСТРИРУЙТЕСЬ Thes e три таблицы и показать на CGridView. Если у вас есть какие-либо учебники, примечания относительно этого, пожалуйста, предоставьте.

Пожалуйста, помогите. Спасибо.

+0

Вы должны определить отношения в модели и использовать 'with' поле из CDbCriteria. –

+0

См. [Следующая ссылка] (http://stackoverflow.com/a/14774541/1746258) и здесь [doc] (http://www.yiiframework.com/doc/guide/1.1/en/database.arr# relational-query-options) здесь вы можете прочитать, как преобразовать 'sql query' в' yii' код –

ответ

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, где вы можете использовать код SQL для JOINs.

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