如果我有一个用户表和一个电子邮件表,我是否必须定义一个email.php
模型来定义这个关系User.php
:
static $has_many = array(
array('emails')
);
另外,如果我有一个像电子邮件这样的对象,它可以与可以拥有该对象的其他对象具有外键关系,我如何定义电子邮件可以belong_to users
AND belong_to domains
?
如果我有一个用户表和一个电子邮件表,我是否必须定义一个email.php
模型来定义这个关系User.php
:
static $has_many = array(
array('emails')
);
另外,如果我有一个像电子邮件这样的对象,它可以与可以拥有该对象的其他对象具有外键关系,我如何定义电子邮件可以belong_to users
AND belong_to domains
?
如果模型使用 phpAR 默认命名约定,则不必定义模型。尽管您可能想要,但如果您使用关联。如果您不定义Email
模型及其与 的belongs_to
关系User
,您将无法访问User
through Email
(反之亦然,Email
通过User
)
多个belongs_to
是通过数组实现的:
class Email extends ActiveRecord\Model {
static $belongs_to = array(
array('user'),
array('domain')
);
}
请注意,belongs_to
您必须使用单数形式,而不是复数形式
你在使用框架吗?
如果不是,您应该为每个模型使用静态吸气剂。
您应该在其数据字段上使用延迟加载。
所以如果你写 email->getUser() 你会得到一个用户对象,它只知道它的 id 并且可以在需要时从数据库中延迟加载数据。
始终要知道自己在做什么(有时最好使用连接来避免 N 次查询(在使用循环或获取数据时会抛出超过 2 个表))。
我建议您不要编写自己的 ORM 或 Active Records 实现,除非您想学习一些东西。
更好地为您的项目使用理论 2 或等效框架。