无法指定Model->别名

时间:2015-01-21 21:57:04

标签: cakephp

我在我的程序中使用自定义类,可以在需要时连接到多个表。

我正在尝试创建该类的新实例,并且我可以通过构造函数传递不同的表名和别名。这适用于表名,但它没有在文档

中设置模型别名

创建一个新对象。正在实例化的类是列表

$lists = new Lists(null, 'list_musicians', null, null, 'Musician');

类构造函数

public function __construct($id = false, $table = null, $ds = null, $name = null, $alias) {
    parent::__construct($id, $table, $ds, $name, $alias);
    $this->virtualFields['full_name'] = sprintf(
        'CONCAT(%s.first_name, " ", %s.last_name)', $this->alias, $this->alias
    );

    //debug($this->alias);die;
}

这将连接到名为“list_musicians”的表或我传入的任何表名,但$alias字段未分配给$this->alias 如果我手动重新分配别名,则虚拟字段不会与结果包含在同一个数组中,如documentation中所指定。别名始终为Lists

如何通过构造函数设置模型别名?

2 个答案:

答案 0 :(得分:0)

  

我在我的程序中使用可以连接到多个的自定义类   我需要的表格。

老实说,在大多数情况下,这是一个非常糟糕的主意。如果您已经阅读了本书中的MVC章节,请再次阅读,如果现在不读它。

你错了,模型类的构造函数不会知道别名的第四个参数check your own link并再次读取它。

public function __construct($id = false, $table = null, $ds = null)

但是,如果你想坚持不好的做法,你总是可以使用ClassRegistry::init()来实例化Model对象。

  

示例简单使用:获取Post模型实例   ClassRegistry ::的init('邮政&#39);

     

扩展:数组('类' =>' ClassName','别名' =>   ' AliasNameStoredInTheRegistry&#39);

     

模型类可以接受可选数组(' id' => $ id,' table' =>   $ table,' ds' => $ ds,'别名' => $别名);

只需使用Model作为班级名称,并提供您想要的任何表格。

答案 1 :(得分:0)

解决此问题的方法是直接创建模型关联到db​​表。使用表名作为类名并瞧

'Religion' => array(
        'className' => 'list_religions',
        'foreignKey' => 'religion_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )