我正在尝试用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查询..
提前致谢
答案 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);