2016-09-07 4 views
3

Ich habe ein Problem in einer Join-Klausel bekommen ... das ist mein Code:Codeigniter entfernen "(" in Join-Klausel

$this->db->select("users.id, users.first_name, users.second_name")->from("users"); 
$this->db->join("users_groups", "users_groups.user_id=users.id AND (users_groups.group_id=".$this->config->item("admin_group")." OR users_groups.group_id=".$this->config->item("admin_location_group")." OR users_groups.group_id=".$this->config->item("employee_group").")", "INNER"); 
return $this->db->get()->result(); 

Und es produziert, was das ist:

SELECT `users`.`id`, `users`.`first_name`, `users`.`second_name` FROM `users` INNER JOIN `users_groups` ON `users_groups`.`user_id`=`users`.`id` AND `users_groups`.`group_id`=1 OR `users_groups`.`group_id`=8 OR `users_groups`.`group_id`=4) 

A Klammer vor users_groups. group_id = 1 entfernt ... keine Ahnung, warum ??

Danke.

+1

Ich glaube, dass diese Abfrage ein viertes optionales Argument hat, dass, wenn Sie auf true festlegen, die Daten nicht entkommt, dies den Parser möglicherweise daran hindert, die Klammern zu entfernen (und die Entwindung zu stoppen). Aber das ist sicherlich merkwürdig. Ich kann nichts falsch mit der Abfrage selbst sehen. – PaulD

+0

Bedeutet Ihre Abfrage 'WHERE users_groups.group_id = 1 ODER users_groups.group_id = 8 OR users_groups.group_id = 4' nach' AND'? – Benyi

+1

Dank @PaulD ... der vierte Parameter ist die Lösung (wenn Sie als Lösung setzen, werde ich als die gute markieren). –

Antwort

2

Die Join-Abfrage hat ein viertes optionales Argument, dass, wenn Sie auf "True" setzen, die Daten nicht entfernt werden, dies den Parser daran hindert, die Klammern zu entfernen (und die Entwurzelung zu stoppen).

Aus dem Text & Tabellen:

join ($ table, $ cond [, $ type = '' [, $ entkommen = NULL]]) Parameter:

$table (string) – Table name to join 
    $cond (string) – The JOIN ON condition 
    $type (string) – The JOIN type 
    $escape (bool) – Whether to escape values and identifiers 

Returns:

CI_DB_query_builder instance (method chaining) 

http://www.codeigniter.com/user_guide/database/query_builder.html#CI_DB_query_builder::join

Verwandte Themen