【发布时间】:2013-08-14 00:38:27
【问题描述】:
我是 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; 无关。
相反,我更改了find() 方法中的'conditions' 值,结果一切正常。我仍然不知道为什么,但现在它工作得很好。
不正确的代码:
$result = $this->$model->find('all', array(
'conditions' => array(
$model . '.' . $field . " LIKE '%" . $term . "%'"
)
));
正确代码:
$result = $this->$model->find('all', array(
'conditions' => array(
$model . '.' . $field . " LIKE " => "%" . $term . "%"
)
));
【问题讨论】:
-
请显示实际触发错误的完整代码。您是否还确定
$model实际上包含预期值?请提及您的确切 CakePHP 版本!
标签: cakephp autocomplete cakephp-2.0