[英]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.