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 与常规查询

CodeIgniter Active Record 中的 SQL 注释?

动态 Active Record 查询中的 Codeigniter 括号

Where 子句 CodeIgniter 中的 Active Record 问题