Yii:在模型中使用CDbCriteria和自定义变量

时间:2012-09-14 20:13:38

标签: yii

我正在尝试基于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,我需要更改什么来使其工作?

1 个答案:

答案 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);