CakePHP virtualField和displayField用于多个对象

时间:2014-11-30 13:32:22

标签: php cakephp model

displayFieldvirtualFields结合使用时遇到了一些问题。

我有文件 属于 2个不同的用户

public $belongsTo = array(
    'Creator' => array(
        'className' => 'User',
        'foreignKey' => 'creator_id',
    ),
    'Editor' => array(
        'className' => 'User',
        'foreignKey' => 'editor_id',
    )
);

用户模型中的virtualFielddisplayField。我使用以下代码:

public $virtualFields = array(
  'full_name' => "CONCAT(first_name, ' ',last_name)"
);

public $displayField = 'full_name';

创建一个新文件工作正常,但如果我想查看我的所有文件,我会收到以下错误:

  

错误:SQLSTATE [23000]:完整性约束违规:1052字段列表中的“first_name”列不明确

我已经在这里读了一下: http://book.cakephp.org/2.0/en/models/virtual-fields.html 最后,virtualFields存在一些限制,因此我尝试将其添加到Controller:

$this->virtualFields += $this->Creator->virtualFields;
$this->virtualFields += $this->Editor->virtualFields;

但不知怎的,这并没有改变任何事情。

希望你能帮我解决这个小问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我猜你需要2个虚拟字段:

$this->File->virtualFields = array(
    'Creator__full_name' => "CONCAT(Creator.first_name, ' ',Creator.last_name)",
    'Editor__full_name' => "CONCAT(Editor.first_name, ' ',Editor.last_name)"
);