Как написать запрос в CodeIgniter Active Record - PullRequest
1 голос
/ 22 июня 2010

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

SELECT fruits.* FROM fruits
WHERE fruits.color = 'red'
AND ( fruits.size = 'medium' OR fruits.name = 'kiwi' OR fruits.length = 7 );

По сути, я хочу иметь несколько предложений или предложений, кроме одного, где всегда применяется условие.

$this->db->select( 'fruits.*' );
$this->db->from( 'fruits' );
$this->db->where( 'fruits.color', 'red' );
$this->db->or_where( 'fruits.size', 'medium' );
$this->db->or_where( 'fruits.name', 'kiwi' );
$this->db->or_where( 'fruits.length', 7 );

Производит что-то вроде:

SELECT fruits.* FROM fruits WHERE fruits.color = 'red' OR fruits.size = 'medium' OR fruits.name = 'kiwi' OR fruits.length = 7;

Мне нужно, чтобы этот цвет был всегда красный.

Есть ли достойный способ сделать это?

1 Ответ

0 голосов
/ 22 июня 2010

Нет способа добиться этого должным образом с помощью CodeIgniter Active Record.

Единственный способ, который не слишком уродлив, это использовать пользовательскую строку с где) работает следующим образом:

$this->db->select( 'fruits.*' );
$this->db->from( 'fruits' );
$where = "fruits.color = 'red' AND ( fruits.size = 'medium' OR fruits.name = 'kiwi' OR fruits.length = 7 );";
$this->db->where( $where );

ВАЖНО: обратите внимание, что при использовании пользовательской строки ваша переменная НЕ будет экранирована, поэтому вам необходимо использовать $ this-> db-> escape ()

$this->db->select( 'fruits.*' );
$this->db->from( 'fruits' );

$color = 'red';
$size = 'medium';
$name = 'kiwi';
$length = 7;
$where = "fruits.color = '".$this->db->escape($color)."' AND ( fruits.size = '".$this->db->escape($size)."' OR fruits.name = '".$this->db->escape($name)."' OR fruits.length = '".$this->db->escape($length)."');";
$this->db->where( $where );

Редактировать:

Я запутался в хорошем запросе, я исправил его :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...