2013-06-18 12 views
7

私は、オートコンプリートのために、CIのアクティブレコードを使用してConcatを試しています。Concord in Codeigniterアクティブレコード

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

で1054

不明な列 '名前':

エラー番号:私はこの言葉からMySQLのエラーを得続ける

$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); 

これは本当ですが、私はちょうど私のConcat節で作成しました。理想的には、連結されたfirstnameとsurnameフィールドに一致する$ termが必要です。

私はこれを改善するために何ができるでしょうか?私は...ちょうどフラットMySQLのクエリとしてこれを書いておく

おかげ

答えて

12
$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); 

ないのはなぜあなたが複数の選択を実行していることを確認し検討しています。だからちょうど1つの選択としてそれを置く。 2番目のものが最初のものをオーバーライドしているため、連結を上書きしてname列を作成している可能性があります。

+0

ありがとうCryptic。私は自分自身の代わりの解決策を見つけました。where節では、私はこのように連結しました:$ this-> db-> where( "CONCAT(user_firstname、 '。'、user_surname)LIKE '%"。$ term。 "% NULL、FALSE); – StuBlackett

+0

それは壮大な解決策でした、あなたはそれを説明する気になりますか? –

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); 

出典:MySQL select with CONCAT condition

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

また、これは問題を解決します:

$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'); 
9
$this->db->select("CONCAT((first_name),(' '),(middle_name),(' '),(last_name)) as candidate_full_name"); 

上記のように試してください100%それはCIで動作します。

+2

これはCI 3の私のためにのみ動作します。CI 2では、かっこは問題ではありませんでした。 –

+0

これは実際にCIの2つのフィールドを連結するAnswerです。フィールドはnullでなくてはなりません –

関連する問題