Codeigniter活动记录中的Concat

时间:2013-06-18 11:19:44

标签: codeigniter activerecord

我正在尝试用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查询..

提前致谢

5 个答案:

答案 0 :(得分:13)

$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列。

答案 1 :(得分:9)

$this->db->select("CONCAT((first_name),(' '),(middle_name),(' '),(last_name)) as candidate_full_name");

尝试以上100%,它将在ci中工作。

答案 2 :(得分: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);

答案 3 :(得分: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');

答案 4 :(得分:2)

如果隐秘的解决方案不起作用,那就试试吧。

$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 condition