2013-06-18 15 views
7

Próbuję Concat dla autouzupełniania, używając aktywnego rekordu CI.Concat in Active Record Codeigniter

moje pytanie brzmi:

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

Wciąż dostaję błąd MySQL z tym powiedzeniem:

Numer błędu: 1054

Unknown column 'name' in 'where clause'

Co prawda, jednak właśnie stworzyłem klauzulę Concat. Idealnie potrzebuję $ term, aby pasować do połączonych pól imienia i nazwiska.

Jakieś pomysły, co mogę zrobić, aby to poprawić? Zastanawiam tylko pisanie to jako płaskiej MySQL Query ..

Dzięki z góry

Odpowiedz

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

Nie wiem, dlaczego używasz wielu wybiera. Po prostu umieść to jako pojedynczy wybór. Prawdopodobnie druga z nich przesłania pierwszą, a tym samym zastępuje konkatenację, tworząc kolumnę name.

+0

Dzięki Cryptic. Znalazłem sobie alternatywne rozwiązanie, W klauzuli where łączę się tak: $ this-> db-> where ("CONCAT (user_firstname,. ', User_surname) LIKE'%". $ Term. "% '", NULL, FALSE); – StuBlackett

+0

to było epickie rozwiązanie, czy mógłbyś to wyjaśnić? –

2

Jeśli rozwiązanie zagadkowe nie działa, spróbuj.

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

Źródło: MySQL select with CONCAT condition

3

Musisz wybrać pola, które mają concat tak:

$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

Będzie to również rozwiązać problem:

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

Spróbuj powyżej 100% będzie działać w ci.

+2

Tylko to działa dla mnie w CI 3. W CI 2 nawias nie był problemem. –

+0

To jest faktycznie Odpowiedź na concat dwa pola CI, pola nie mogą być puste –

Powiązane problemy