Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我需要为所有关联定义模型吗?_Php_Phpactiverecord - Fatal编程技术网

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

Php 我需要为所有关联定义模型吗?,php,phpactiverecord,Php,Phpactiverecord,如果我有一个用户表和一个电子邮件表,我是否必须定义一个email.php模型来定义User.php中的这种关系: static $has_many = array( array('emails') ); 另外,如果我有一个像电子邮件这样的对象,它可以与拥有该对象的其他对象具有外键关系,那么我如何定义电子邮件可以属于用户和属于域?您使用的是框架吗 如果不是,则应该为每个模型使用静态getter 您应该在其数据字段上使用lazyloading 因此,如果您编写email->ge

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

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

另外,如果我有一个像电子邮件这样的对象,它可以与拥有该对象的其他对象具有外键关系,那么我如何定义电子邮件可以
属于用户
属于域

您使用的是框架吗

如果不是,则应该为每个模型使用静态getter

您应该在其数据字段上使用lazyloading

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

要知道自己在做什么(有时最好使用连接来避免N个查询(在处理循环或获取超过2个表的数据时))

我建议您不要编写自己的ORM或活动记录实现,除非您想了解一些东西

最好在项目中使用doctrine2或等效的框架

  • 如果使用phpAR默认命名约定,则不必定义模型。 尽管您可能希望,但如果您使用关联。如果您没有定义
    电子邮件
    模型,并且它的
    属于
    用户
    关系,您将无法通过
    电子邮件
    访问
    用户
    (仅限通过
    用户
    访问
    电子邮件)

  • 通过数组实现多个
    所属的

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