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