2012-10-04 4 views
0

Я пытаюсь понять помощник базы данных CI/класс/lib. И основные основы я не могу решить. Но я так привык к прямому написанию запросов, вместо того, чтобы использовать ORM, что его немного запутывает. Во всяком случае ..Codeigniter эквивалент этого запроса mysql

У меня есть этот запрос,

SELECT * FROM my_table 
    WHERE ((a_id = xx OR b_id = xx) AND (a_id = zz OR b_id = zz)) 
    AND active = 1 

В основном у меня есть таблица, где у меня есть 2 пользователей, связанных друг с другом, но несколько пользователей, поэтому мне нужно, чтобы убедиться, что связь есть, и в частности, между 2, где активный флаг является тем, чем он является.

Однако Не знаете, как обращаться с этим запросом в ORM CI, поэтому я ищу несколько рекомендаций по этой проблеме.

ответ

1

Попробуйте следующий код

$this->db->select('*'); 
$this->db->where('(a_id = "xx" or b_id = "xx")'; 
$this->db->where('(a_id = "zz" or b_id = "zz")'; 
$this->db->where('active', '1'); 
+0

Я думаю, что активная запись лучше, так как она дезинфицирует запрос. – Shaolin

+0

'$ this-> db-> Select ('*')' является избыточным. По умолчанию класс Active Record будет выбирать все поля. –

1

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

How can I rewrite this SQL into CodeIgniter's Active Records?

1

Если вы не хотите использовать активные записи, которые вы можете сделать это таким образом

$this->load->database(); 
$sql = "SELECT * FROM mytable WHERE visible = 't' ORDER BY symbol"; 
$query = $this->db->query($sql); 
return $query->result(); 

См. http://codeigniter.com/user_guide/database/queries.html

Смежные вопросы