Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на CodeIgniter get_where за свързване на оператори 'and' и 'or'

От Codeigniter 3.0 класът на съставителя на заявки поддържа Групиране на заявки

от документите:

$this->db->select('*')->from('my_table')
        ->group_start()
                ->where('a', 'a')
                ->or_group_start()
                        ->where('b', 'b')
                        ->where('c', 'c')
                ->group_end()
        ->group_end()
        ->where('d', 'd')
->get();

// Generates:
// SELECT * FROM (`my_table`) WHERE ( `a` = 'a' OR ( `b` = 'b' AND `c` = 'c' ) ) AND `d` = 'd'

Редактиране: във вашия пример бихте използвали:

$this->db->select('message, created')->from('logs')
        ->where('username', 'user')
        ->group_start()
                ->where('created >', '1487695796')
                ->where('created <', '1487782196')
        ->group_end()
        ->group_start()
                ->where('message', 'login failure')
                ->or_where('message', 'login success')
                ->or_where('message', 'log out')
        ->group_end()               
        ->order_by('created', 'ASC')  
->get(); 

или

$this->db->select('message, created')
        ->group_start()
                ->where('created >', '1487695796')
                ->where('created <', '1487782196')
        ->group_end()
        ->group_start()
                ->where('message', 'login failure')
                ->or_where('message', 'login success')
                ->or_where('message', 'log out')
        ->group_end()               
        ->order_by('created', 'ASC')  
->get_where('logs', array('username' => 'user') );

// both generate:
//SELECT `message`, `created` 
//FROM `logs` 
//WHERE `username` = 'user' 
//AND ( `created` > '1487695796' AND `created` < '1487782196' ) 
//AND ( `message` = 'login failure' OR `message` = 'login success' OR `message` = 'log out' ) 
//ORDER BY `created` ASC

за да проверите дали генерираната от Codeigniter заявка съответства на вашия SQL, можете да използвате:

echo $this->db->last_query(); // echos last query string


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# с MySQL - Грешка:Guid трябва да съдържа 32 цифри с 4 тирета, когато се опитвате да отворите връзката

  2. Как да търся редове, съдържащи подниз?

  3. Как да напишете HQL JOIN заявка за избрани колони от множество таблици с помощта на конструктор в клаузата за избор

  4. Проектиране на база данни:към EAV или не към EAV?

  5. Symfony2:Основна таблица или изглед не са намерени:1146