【问题标题】:Concat in Codeigniter Active RecordCodeigniter Active Record 中的 Concat
【发布时间】: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..

提前致谢

【问题讨论】:

    标签: codeigniter activerecord


    【解决方案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');
        

        【讨论】:

          猜你喜欢
          • 2013-01-24
          • 2012-03-24
          • 1970-01-01
          • 2016-03-15
          • 1970-01-01
          • 2013-02-18
          • 2011-07-10
          • 2012-02-03
          • 2012-07-24
          相关资源
          最近更新 更多