Codeigniter Active Record 中的 Concat
Posted
技术标签:
【中文标题】Codeigniter Active Record 中的 Concat【英文标题】:Concat in Codeigniter Active Record 【发布时间】:2013-06-14 14:10:30 【问题描述】:我正在尝试使用 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 子句”中的未知列“名称”
这是真的,但是我刚刚在我的 Concat 子句中创建了。理想情况下,我需要 $term 来匹配 Concatenated firstname 和 surname 字段。
有什么想法可以改善这一点吗?我正在考虑把它写成一个扁平的 MySQL Query..
提前致谢
【问题讨论】:
【参考方案1】:$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
列。
【讨论】:
感谢 Cryptic。我找到了一个替代解决方案,在 where 子句中我像这样连接: $this->db->where("CONCAT(user_firstname, '.', user_surname) LIKE '%".$term."%'",空,假); 那是史诗般的解决方案,您介意解释一下吗?【参考方案2】:$this->db->select("CONCAT((first_name),(' '),(middle_name),(' '),(last_name)) as candidate_full_name");
尝试 100% 以上,它会在 ci 中工作。
【讨论】:
只有这在 CI 3 中对我有效。在 CI 2 中,括号不是问题。 这是在 CI 中连接两个字段的实际答案,字段不能为空【参考方案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 condition
【讨论】:
【参考方案4】:您必须像这样选择要连接的字段:
$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);
【讨论】:
【参考方案5】:这也将解决问题:
$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');
【讨论】:
以上是关于Codeigniter Active Record 中的 Concat的主要内容,如果未能解决你的问题,请参考以下文章
使用 CodeIgniter Active Record 语句
CodeIgniter Active Record 与常规查询
CodeIgniter Active Record 中的 SQL 注释?