【问题标题】:what's the difference between model->alias and model->name in CakePHP?CakePHP 中的model->alias 和model->name 有什么区别?
【发布时间】:2014-04-23 00:36:10
【问题描述】:

aliasname 都是蛋糕模型中的属性。它们看起来很相似,但既然都存在,那么肯定是有区别的。这是什么?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    我猜,但是当您在模型和另一个模型之间建立关系并且您给关联模型的名称不等于类的名称时,别名可能是分配的值。

    例如:

    $hasMany = array('UserNew' => array('className' => 'User'));
    

    在这种情况下,您使用的是实际称为 User 的模型,但您将其引用为“UserNew”。

    【讨论】:

    • $hasMany = array('Friend' => array('className' => 'User'));会是一个更好的例子,但你是对的。 :) 因此,您希望尽可能使用alias,因为您永远无法确定name 实际上是您认为正在处理的对象。
    【解决方案2】:

    这是 cake 进行连接时使用的表别名的集合。来自cake/lib/model/model_php5.php

    /**
     * Alias table names for model, for use in SQL JOIN statements.
     *
     * @var array
     * @access public
     */
        var $alias = array();
    

    【讨论】:

      【解决方案3】:

      如果您想临时更改模型中的表,并且要覆盖 CakePHP 魔术 FROM ,请将 $this->alias 更改为您想要的名称。 $this->name 似乎在构造函数中使用,并且必须在该过程中的某处构建别名。在要覆盖的方法中更改 $this->name 是不够的。您必须更改 $this->alias 并执行 setSource() 方法,如下所示:

      function my_override_method(){
        $this->setSource('new_db_table_name_here');
        $this->alias = "NewTable";
      }
      

      【讨论】:

        【解决方案4】:
        • name:模型名称,例如Post
        • alias:模型的别名,用于在ClassRegistry中注册实例,例如ParentThread

        Model::__construct( )

        看看this的问题也。

        【讨论】:

          猜你喜欢
          • 2021-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-05
          • 1970-01-01
          • 2021-09-06
          • 2012-09-07
          • 2013-08-31
          相关资源
          最近更新 更多