[英]Has Many relations in between both models
我有這樣的數據庫
== Invoices ==
id
customer_id
== Customers ==
id
firstname
lastname
membersince
因此,我在兩個模型之間建立了聯系,如下所示。
發票模型中的關系定義:
'customers'=>array(self::HAS_MANY,'Invoices','customer_id'),
客戶模型中的關系定義
'invoices' => array(self::BELONGS_TO, 'Invoices', 'invoice_id'),
現在我想知道兩個模型之間的關系是否正確? 歡迎任何建議。
不,模型之間的關系不正確。
我假設您在這里想要的是客戶可以有許多發票,但是發票只能由一個客戶擁有,因為這就是您的數據庫模式所暗示的。
請注意,在下面的代碼中,我區分了客戶和發票的單數形式和復數形式,以使代碼具有邏輯性並易於理解。
在這種情況下, Invoice
模型中的關系定義將如下所示:
class Invoice extends CActiveRecord {
public function relations() {
return array(
'customer' => array(self::BELONGS_TO, 'Customer', 'customer_id')
);
}
}
發票“屬於”客戶。 'Customer'
表明我們參考模型的類型是Customer
,而'customer_id'
在列名invoices
表指的是客戶的主鍵。
Customer
模型看起來有些棘手:
class Customer extends CActiveRecord {
public function relations() {
return array(
'invoices' => array(self::HAS_MANY, 'Invoice',
'customer_id', 'index' => 'id')
);
}
}
在此,關系定義指示Customer
可以引用許多Invoice
模型。 注意其余關系的定義方式。 customer_id
再次是引用Customer
的列,並且'index' => 'id'
告訴Yii將customers
表中的列id
用作關系的鍵。
您可以在Yii文檔中找到有關relations
方法的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.