13

我正在尝试使用 Concat 进行自动完成,使用 CI 的 Active Record。

我的查询是:

$this->db->select("CONCAT(user_firstname, '.', user_surname) AS name", FALSE);
$this->db->select('user_id, user_telephone, user_email');
$this->db->from('users');
$this->db->where('name', $term);

我不断从这句话中得到一个 MySQL 错误:

错误号:1054

'where 子句'中的未知列'name'

这是真的,但是我刚刚在我的 Concat 子句中创建了。理想情况下,我需要 $term 来匹配 Concatenated firstname 和 surname 字段。

有什么想法我可以做些什么来改善这一点?我正在考虑把它写成一个扁平的 MySQL Query ..

提前致谢

4

5 回答 5

16
$this->db->select('user_id, user_telephone, user_email, CONCAT(user_firstname, '.', user_surname) AS name', FALSE);
$this->db->from('users');
$this->db->where('name', $term);

不确定为什么要运行多项选择。所以只要把它作为一个单一的选择。可能是第二个覆盖了第一个,从而覆盖了连接以创建name列。

于 2013-06-18T11:50:24.820 回答
10
$this->db->select("CONCAT((first_name),(' '),(middle_name),(' '),(last_name)) as candidate_full_name");

尝试超过 100% 它将在 ci 中工作。

于 2015-03-03T10:25:56.363 回答
3

如果神秘的解决方案不起作用,请尝试。

$query = "SELECT * 
  FROM  (
        SELECT user_id, user_telephone, user_email, CONCAT(user_firstname, ' ', user_surname) name
        FROM users 
    ) a
WHERE name LIKE '%".$term."%'";
$this->db->query($query);

资料来源:MySQL select with CONCAT 条件

于 2013-06-18T11:54:40.087 回答
3

您必须像这样选择要连接的字段:

$this->db->select('user_id, user_telephone, user_email, user_firstname, user_surname, CONCAT(user_firstname, '.', user_surname) AS name', FALSE);
$this->db->from('users');
$this->db->where('name', $term);
于 2014-06-04T20:20:52.890 回答
3

这也将解决问题:

$this->db->select('user_id, user_telephone, user_email, user_firstname, user_surname, CONCAT(user_firstname,user_surname) AS name', FALSE);
$this->db->from('users');
于 2015-01-07T10:55:10.533 回答