我是否需要为所有关联定义模型?

时间:2013-02-03 19:36:05

标签: php phpactiverecord

如果我有用户表和电子邮件表,我是否必须定义email.php模型以在User.php中定义此关系:

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

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

2 个答案:

答案 0 :(得分:0)

  1. 如果使用phpAR默认命名约定,则不必定义模型。 虽然您可能想要,但如果您使用关联。如果您未将Email模型及其belongs_to关系定义为User,则无法通过User访问Email(仅反之亦然) ,EmailUser

  2. 通过数组实现多个belongs_to

    class Email extends ActiveRecord\Model {
        static $belongs_to = array(
            array('user'),
            array('domain')
        );
    }
    
  3. 请注意,对于belongs_to,您必须使用单数形式,而不是复数形式

答案 1 :(得分:-1)

您使用的是框架吗?

如果不是,则应为每个模型使用静态吸气剂。

你应该在它的数据字段上使用延迟加载。

因此,如果您编写email-> getUser(),您将获得一个只知道它的id的用户对象,并且可以在需要时从数据库延迟加载数据。

始终要知道你在做什么(有时最好使用连接来避免N个查询(当使用循环或获取数据时,抛出超过2个表))。

我建议你不要编写自己的ORM或Active Records实现,除非你想学点东西。

更好地使用doctrine2或项目的等效框架。