Как сгруппировать предложения WHERE с активной записью? - PullRequest
3 голосов
/ 18 января 2012

Приведенный ниже код активной записи не группирует предложения WHERE, как мне нужно ...

        $this->db->where('customers_id',$this->user->getCurrentUserProperty('id'))
        $this->db->like('delivery_name', $this->input->post('search'));
        $this->db->or_like('customers_company', $this->input->post('search'));
        $this->db->or_like('customers_company2', $this->input->post('search'));
        $this->db->or_like('customers_company3', $this->input->post('search'));
        $this->db->or_like('customers_company4', $this->input->post('search'));

Это генерирует

WHERE `customers_id` = 31509 AND `delivery_name` LIKE '%str%' OR `customers_company` LIKE '%str%'"

Мне НУЖЕН вывод, чтобы иметь круглые скобкиэто как ниже ... как я могу это сделать?

WHERE `customers_id` = 31509 AND (`delivery_name` LIKE '%str%' OR `customers_company` LIKE '%str%')"

Примечание: я ненавижу активную запись за раздражающее время, как это

Если я использую метод ниже, как я могу дезинфицироватьввод, так что это не сырье в запросе?

$where = "name='Joe' AND status='boss' OR status='active'";

$this->db->where($where);

Ответы [ 2 ]

4 голосов
/ 18 января 2012

К сожалению, кажется, нет чистого способа сделать это.where принимает строку для использования в качестве предложения, так что вы можете сделать что-то вроде этого (да, я знаю, это не красиво):

$search = $this->db->escape_like_str($this->input->post('search'));
$this->db->where('customers_id',$this->user->getCurrentUserProperty('id'));
$this->db->where("(`delivery_name` LIKE '%$search%' OR `customers_company` LIKE '%$search%')");
1 голос
/ 20 января 2016

В Codeigniter 3.0.3 вы можете сделать это просто так:

$this->db->where('customers_id',$this->user->getCurrentUserProperty('id'));
$this->db->group_start();
$this->db->like('delivery_name', $this->input->post('search'));
$this->db->or_like('customers_company', $this->input->post('search'));
$this->db->or_like('customers_company2', $this->input->post('search'));
$this->db->or_like('customers_company3', $this->input->post('search'));
$this->db->or_like('customers_company4', $this->input->post('search'));
$this->db->group_end();

Возможно, это может помочь

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