CakePHP virtualField 和 displayField 用于多个对象


CakePHP virtualField and displayField for several objects

我对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 有一些限制,所以我尝试将其添加到控制器中:

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

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

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

提前感谢!

我想你需要 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)"
);