我是 CakePHP 新手。我一直在寻找这个问题的答案一段时间。
我按照 RichardAtHome 的指示回答了关于 CakePHP 中的自动完成功能(autoComplete CakePHP 2.0)。
我在我的 AppController 中设置了该功能。
这对真实字段非常有效,但在使用虚拟字段时会出现问题:
class Person extends AppModel {
public $virtualFields = array(
'name' => "CONCAT(Person.firstname, ' ', Person.lastname)"
);
}
我收到此错误:Column not found: 1054 Unknown column 'Person.name' in 'where clause'
检查 SQL 查询时,我看到:
(CONCAT(`Person`.`firstname`, ' ', `Person`.`lastname`)) AS `Person__name`
此问题仅在我使用$model = $this->{$this->modelClass}->alias;
. 在特定控制器(不是 AppController)中硬编码模型类可以正常工作。
我需要做什么才能使其工作?
更新:
在摆弄这个之后,我发现它根本不相关$model = $this->{$this->modelClass}->alias;
。
相反,我更改了方法'conditions'
中的值,find()
结果一切正常。我仍然对为什么感到困惑,但现在它工作得很好。
不正确的代码:
$result = $this->$model->find('all', array(
'conditions' => array(
$model . '.' . $field . " LIKE '%" . $term . "%'"
)
));
正确代码:
$result = $this->$model->find('all', array(
'conditions' => array(
$model . '.' . $field . " LIKE " => "%" . $term . "%"
)
));