2012-02-20 3 views
0

У меня есть база данных, как этотсвязи В разных моделях В Yii

+------------------+ 
|  Invoices  | 
+------------------+ 
| id    | 
| customer_id (Fk) | 
| description  | 
+------------------+ 

+------------------+ 
| InvoiceItems | 
+------------------+ 
| id    | 
| Item_name  | 
| price   | 
| discount   | 
| description  | 
+------------------+ 

+------------------+ 
| Customers  | 
+------------------+ 
| id    | 
| firstname  | 
| lastname   | 
| description  | 
+------------------+ 

Согласно базе данных я сделал отношения в модели следующим образом.
В модели Счета-фактуры, то отношение, как этот

public function relations() 
{ 
return array(
    'invoiceitem' => array(self::HAS_MANY,'InvoiceItems','invoice_id'), 
    'customers' => array(self::BELONGS_TO,'Customer','customer_id'), 
); 
} 

В InvoiceItems модели связи, как это

public function relations() 
{ 
return array(
    'invoice' => array(self::BELONGS_TO,'Invoices','invoice_id'), 
); 
} 

В Покупателей модели отношений, как это

public function relations() 
{ 
    return array(
    'invoice' => array(self::HAS_MANY, 'Invoices','customer_id') 
); 
} 

Теперь я хочу знать, правильны ли отношения между этими моделями?

+0

ваших отношений являются правильными, если Вы имеете внешний ключ, как упомянуто Майклом –

ответ

0

Элемент вашего счета не содержит поля, называемого invoice_id, в описании таблицы. Отношения требуют ссылки на первичный ключ для работы. Поле db, которое вы объявляете в отношении, должно содержать первичный ключ модели, с которой вы работаете. Поэтому, если вы работаете со счетом-фактурой, отношение HAS_MANY должно быть в состоянии найти идентификатор счета-фактуры в поле invoice_id на элементе. Вы также можете использовать отдельную таблицу для данных соотношения и объявить его любит:

array(self::HAS_MANY,'InvoiceItems',reltable('invoice_id', 'item_id)) 

Вы можете прочитать больше об отношениях here

+0

, Спасибо за ваш ответ. Я забыл написать эту invoice_id в таблице InvoiceItems в моем вопросе. Фактически я определил, что с моего сайта. Как вы можете мне рассказать, является ли соотношение между моделями правильными? Чтобы я мог продолжить ... – NewUser

Смежные вопросы