codeigniter и использование мультииндекса в функции where (array) - PullRequest
0 голосов
/ 07 сентября 2011

Когда я использую это в codeigniter, он выбирает только последний индекс массива

$array = array("status !=" => "deleted", "status !=" => "concept");
$this->db->where($array);

это результат:

SELECT * FROM (`table`) WHERE `status` != 'concept'

Кто-нибудь знает почему или знает лучший способ?

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Поскольку вы уже выяснили причину этого самостоятельно (вы просто переопределяете ключ массива), вам следует использовать один из следующих параметров:

Вы можете передать все это как строку в первом аргументе:

$this->db->where("status != deleted AND status != concept")->get('table');

Или вы можете сделать 2 отдельных вызова метода:

$this->db->where("status !=", "deleted")
         ->where("status !=", "concept")
         ->get('table');

Первый проще, а второй безопаснее.

0 голосов
/ 22 февраля 2012

Если столбец одинаков для всех предложений, лучшим / более чистым выбором, чем несколько where() с, будет метод where_not_in(). Он делает то, что говорит - создает предложение NOT IN (..)

Пример использования:

$this->db->where_not_in('status', $bad_statuses);
0 голосов
/ 07 сентября 2011

То, как вы это делаете, должно работать, или вы можете попробовать это:

$array = array("status !=" => "deleted", "status !=" => "concept");
foreach($array as $k=>$v){
    $this->db->where($k,$v);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...