Это активный класс записи, где (), как () ограничение? - PullRequest
2 голосов
/ 18 августа 2011

У меня вопрос об использовании класса Active Record, мой фрагмент кода ниже.

$this->db->select('year, distance, gender, rank, name, chiptime, racenumber');
$this->db->order_by("year", "desc");
$this->db->order_by("distance, gender, rank", "asc");
$year = 2010;    
$this->db->where('year', $year);   // where() doesn't work!
$this->db->like('rank', $keyword); // Assume I didn't add like() with $keywords, where() works well.
$this->db->or_like('name', $keyword); 

Когда я связываю $ this-> db-> like () после $ this-> db-> where () в моем классе Active Recrod, $ this-> db-> where () не будет работать снова. Он покажет все годы, включая ключевое слово $.

Это ограничение в классе Active Recrod или я не нашел правильного способа привязки where () и like ().

Спасибо за ваши ответы

Ответы [ 2 ]

5 голосов
/ 18 августа 2011

Я думаю, что это часть "и" и "или".В настоящее время ваш WHERE выглядит следующим образом:

WHERE год = 2010 AND rank = 1 ИЛИ name = 'Peter'

Поскольку у вас есть OR, он найдет все с именем "Peter" или с рангом 1, а год - 2010.

Таким образом, вы должны определить, где лучше, и использовать круглые скобки, где это необходимо.

2 голосов
/ 19 августа 2011

Вы пытались использовать метод кодирования активной записи цепочки ?; как:

$this->db->where(...)->like(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...