SQL-запрос с использованием activerecords - PullRequest
0 голосов
/ 17 мая 2018

Я хочу преобразовать следующий запрос SQL в формат активных записей codeIgniter

SELECT * FROM `relation`
WHERE (`user1` = 144 OR `user2` = 144)
AND `status` = 2
AND `action` != 1

Моя попытка была примерно такой,

$ID=144;
$this->db->where('user1', $ID);
$this->db->or_where('user2', $ID);
$this->db->where('status', 2);
$this->db->where('action!=', 1);

Однако результаты не совместимы.Можете ли вы указать, что здесь?

Я также согласился бы с предложениями, в которых не использовались активные записи для запроса.

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Надеюсь, это поможет вам:

$ID = 144;
$this->db->select('*');
$this->db->from('relation');
$this->db->where('user1', $ID);
$this->db->or_where('user2', $ID);
$this->db->where('status', '2');
$this->db->where('action !=', '1');

$query = $this->db->get();
if ($query->num_rows() > 0)
{
  print_r($result);
  //return $query->result();  
}

Для более: https://www.codeigniter.com/user_guide/database/query_builder.html#looking-for-specific-data

0 голосов
/ 17 мая 2018

правильный запрос будет

$query = $this->db
    ->select('*')
    ->from('relation')
    ->group_start()
        ->where('user1', $ID)
        ->or_where('user2', $ID)
    ->group_end()
    ->where('status', 2)
    ->where('action !=', 1)
    ->get();
0 голосов
/ 17 мая 2018

Поскольку вы используете OR между несколькими условиями, вы должны заключить это в скобки.Измените свой код, как показано ниже:

$this->db->where('(user1', $ID,FALSE);
$this->db->or_where("user2 = $ID)",NULL,FALSE);
$this->db->where('status', 2);
$this->db->where('action!=', 1);
...