1

我正在尝试基于 full_name 进行搜索,它是 first_name 和 last_name 的串联,但我不断收到错误消息。

这是我的控制器的样子:

$criteria = new CDbCriteria;
$criteria->addSearchCondition('full_name',$customer_search);
$customers = Customer::model()->findAll($criteria);

在我的客户模型中,我有一个应该返回全名的方法:

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,我需要进行哪些更改才能使其正常工作?

4

1 回答 1

1

您不能在查询中使用“计算”​​列。您只需重写条件,以便它们只检查数据库中物理存在的列。

由于您想找到他们的名字或姓氏的一部分匹配的人,您必须搜索词括在百分号中(请参阅 MySql 文档)并使用 指定第二个条件:LIKEOR

$criteria = new CDbCriteria;
$criteria->addSearchCondition('first_name', $customer_search);
$criteria->addSearchCondition('last_name', $customer_search, true, "OR");
$customers = Customer::model()->findAll($criteria);
于 2012-09-14T20:20:14.970 回答