Codeigniter Активная запись: больше, чем заявление - PullRequest
16 голосов
/ 09 ноября 2010

Я пытаюсь преобразовать оператор «больше чем» в синтаксис CI Active Record.Когда я использую этот фрагмент

    $this->db->join('product_stocks', "product_stocks.size_id_fk = product_attributes.id", "left");
    $this->db->where('product_stocks.stock_level', '> 1');      
    $result = $this->db->get('product_attributes')->result_array();

Затем выведите $ this-> db-> last_query ();показывает WHERE product_stocks . stock_level = '> 1', что, конечно, не правильно.Можно ли это сделать?

Ответы [ 4 ]

60 голосов
/ 09 ноября 2010

Я думаю, что это должно сработать:

$this->db->where('product_stocks.stock_level >', '1');  //moved the >
6 голосов
/ 14 июля 2014

Либо

$this->db->where('product_stocks.stock_level >', '1');
, либо
$this->db->where(array('product_stocks.stock_level >'=>'1'));
должно это сделать.Обратите внимание на пробел между именем поля и оператором;в противном случае вы получите ошибку 1064.
3 голосов
/ 26 июня 2014

Вы также можете передать параметр String в функцию where () следующим образом:

$this->db->where('product_stocks.stock_level > 1');
0 голосов
/ 19 марта 2013

Я хотел бы иметь в CI следующее:

 $sQuery = "SELECT auftrag, saal, DATE_FORMAT(konzertdatum,'%e, %M, %Y') AS konzertdatum2 FROM auftrag 
    JOIN saal on auftrag.saal_id = saal.id 
    WHERE konzertdatum < NOW() + INTERVAL 240 DAY AND auftrag like '%$sWord%' order by konzertdatum asc LIMIT 4";
 $aOrder = $this->db->query($sQuery);
 $aOrder = $aOrder->result();

Он отлично работает без CI, но когда я использую

      $this->db->select("auftrag, saal, DATE_FORMAT(konzertdatum,'%e, %M, %Y') AS konzertdatum2", false );
    $this->db->from('auftrag');
    $this->db->join('saal', 'auftrag.saal_id = saal.id');
    $this->db->like('auftrag', $sWord);
    $this->db->where('konzertdatum <', 'NOW() + Interval 240 day');

    $this->db->order_by('konzertdatum');
    $this->db->limit(4);

    $oQuery = $this->db->get();

    $aOrder = $oQuery->result();
    print_r($this->db->last_query());

, он возвращает все результаты, не заботясь о где(хотя sql кажется нормальным):

SELECT auftrag, saal, DATE_FORMAT(konzertdatum, '%e, %M, %Y') AS konzertdatum2 FROM (`auftrag`) JOIN `saal` ON `auftrag`.`saal_id` = `saal`.`id` WHERE `konzertdatum` < 'NOW() + Interval 240 day' AND `auftrag` LIKE '%spangenberg%' ORDER BY `konzertdatum` LIMIT 4 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...