多个对象的CakePHP virtualField和displayField
我对displayField与virtualFields的结合有点问题 我有一个属于两个不同用户的文件 作为用户模型中的virtualField和displayField。我使用以下代码:多个对象的CakePHP virtualField和displayField,php,cakephp,model,Php,Cakephp,Model,我对displayField与virtualFields的结合有点问题 我有一个属于两个不同用户的文件 作为用户模型中的virtualField和displayField。我使用以下代码: public $virtualFields = array( 'full_name' => "CONCAT(first_name, ' ',last_name)" ); public $displayField = 'full_name'; 创建新文件可以正常工作,但如果我想查看所有文件,则会出
public $virtualFields = array(
'full_name' => "CONCAT(first_name, ' ',last_name)"
);
public $displayField = 'full_name';
创建新文件可以正常工作,但如果我想查看所有文件,则会出现以下错误:
错误:SQLSTATE[23000]:完整性约束冲突:字段列表中的1052列“first_name”不明确
我已经在这里读到了一点:
最后,virtualFields有一些限制,因此我尝试将其添加到控制器中:
$this->virtualFields += $this->Creator->virtualFields;
$this->virtualFields += $this->Editor->virtualFields;
但不知何故,这并没有改变任何事情
希望你能帮我解决这个小问题
提前谢谢 我想您需要两个虚拟字段:
$this->File->virtualFields = array(
'Creator__full_name' => "CONCAT(Creator.first_name, ' ',Creator.last_name)",
'Editor__full_name' => "CONCAT(Editor.first_name, ' ',Editor.last_name)"
);
您是否尝试将模型名称添加到字段名称中,例如,“full_name”=>“CONCATUser.first_name,,User.last_name”?是的,但我收到一个错误,说找不到User.first_name,因为他正在查找Creator.first_name。是的,您需要使用从中获取first_name和last_name的正确模型名称。请阅读上的部分。他们的代码应该非常适合您。Not found=>您忘记加入关系..也尝试了这个。不幸的是,它不起作用。这段代码对我有用:感谢AgRizzo提供的链接:公共函数uu构造$id=false,$table=null,$ds=null{parent::uuu构造$id,$table,$ds;$This->virtualFields['name']=sprintf'CONCAT%s.first\u name,,%s.last\u name',$This->alias,$This->This->alias;}
$this->File->virtualFields = array(
'Creator__full_name' => "CONCAT(Creator.first_name, ' ',Creator.last_name)",
'Editor__full_name' => "CONCAT(Editor.first_name, ' ',Editor.last_name)"
);