我对displayField
与virtualFields
结合使用有一点问题。
我有一个属于 2 个不同用户的文件。
public $belongsTo = array(
'Creator' => array(
'className' => 'User',
'foreignKey' => 'creator_id',
),
'Editor' => array(
'className' => 'User',
'foreignKey' => 'editor_id',
)
);
作为用户模型中的virtualField
和displayField
。我使用以下代码:
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)"
);