13

CIのアクティブレコードを使用して、オートコンプリートの連結を試みています。

私のクエリは次のとおりです。

$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 が必要です。

これを改善するために私ができることはありますか?これをフラットなMySQLクエリとして書くことを検討しています..

前もって感謝します

4

5 に答える 5

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

100% 以上で試してみると、ci で動作します。

于 2015-03-03T10:25:56.363 に答える
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 条件

于 2013-06-18T11:54:40.087 に答える
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);
于 2014-06-04T20:20:52.890 に答える
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');
于 2015-01-07T10:55:10.533 に答える