我需要为所有关联定义模型吗


Do I need to define models for all associations?

如果我有一个用户表和一个电子邮件表,我是否必须定义一个email.php模型才能在User.php:中定义这种关系

static $has_many = array(
      array('emails')
    );

此外,如果我有一个像电子邮件这样的对象,它可以与其他可以拥有该对象的对象具有外键关系,我如何定义电子邮件可以belong_to usersbelong_to domains

  1. 如果模型使用phpAR默认命名约定,则不必定义模型。尽管您可能想要,但如果您使用关联。如果不定义Email模型及其与Userbelongs_to关系,则无法访问UserEmail(仅反之亦然,EmailUser

  2. 通过阵列实现多个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或等效的框架。