我正在尝试基于full_name进行搜索,这是first_name和last_name的串联,但我一直收到错误。
这就是我的控制器的样子:
$criteria = new CDbCriteria;
$criteria->addSearchCondition('full_name',$customer_search);
$customers = Customer::model()->findAll($criteria);
在我的Customer模型中,我有一个应该返回full_name的方法:
public function getFull_name() {
return $this->first_name.' '.$this->last_name;
}
但是,我收到了这个错误:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'full_name' in 'where clause'. The SQL statement executed was: SELECT * FROM `customer` `t` WHERE full_name LIKE :ycp0
我需要能够搜索first_name和last_name,我需要更改什么来使其工作?
答案 0 :(得分:1)
您不能在查询中使用“计算”列。您只需重写条件,以便它们只检查数据库中实际存在的列。
由于您希望找到部分的部分 其姓名或姓氏匹配的人,您必须将搜索字词用百分号括起来(请参阅MySql文档中的{ {3}})并使用OR
指定第二个条件:
$criteria = new CDbCriteria;
$criteria->addSearchCondition('first_name', $customer_search);
$criteria->addSearchCondition('last_name', $customer_search, true, "OR");
$customers = Customer::model()->findAll($criteria);