Активные записи Codeigniter: как и где в операторе SQL - PullRequest
1 голос
/ 12 сентября 2010

Мне нужно выбрать несколько строк, соответствующих этим условиям:

  1. дата> = сегодня
  2. ключевое слово присутствует в полях 1, 2 или 3

Я предполагаю, что оператор SQL для этого должен быть:

SELECT * FROM `events` WHERE date >= '2010-09-12' AND (field1 LIKE '%keyword%' OR field2 LIKE '%keyword%' OR field3 LIKE '%keyword%')

Я пытаюсь написать это, используя активные записи codeigniter, но условие LIKE, похоже, переопределяет дату.

$this->db->select('*');
$this->db->join('venues', 'events.venue = venue_id');

//first condition: date >= today
$this->db->where('date >=', date('Y-m-d'));

if ($keyword)
//if keyword is present, add this condition as well
{
    $this->db->like('events.description', $keyword);
    $this->db->or_like('band', $keyword);
    $this->db->or_like('venues.venue', $keyword);
}

$this->db->order_by('date', 'ASC');
$this->db->order_by('events.priority', 'DESC'); 
$Q = $this->db->get('events');

Возможно, мне нужно вставить инструкцию LIKE в парентез, но я не знаю, как это сделать.

Ответы [ 3 ]

5 голосов
/ 12 сентября 2010

Я думаю, что вы должны написать «как» часть вашего запроса следующим образом:

$this->db->select('*');
$this->db->join('venues', 'events.venue = venue_id');

if ($keyword)
//if keyword is present, add this condition as well
{
   $where = "( events.description LIKE '$keyword' OR band LIKE '$keyword' OR venues.venue LIKE '$keyword')";
   $this->db->where($where);

}
//first condition: date >= today
$this->db->where('date >=', date('Y-m-d'));

$this->db->order_by('date', 'ASC');
$this->db->order_by('events.priority', 'DESC'); 
0 голосов
/ 03 марта 2011
$Linkearray = array('page_content' => $search, 'page_title' => $search);
$this->db->like($Linkearray);
$this->db->where('page_online',1);
$this->db->where('page_site',$page_site);

// WHERE page_content LIKE '% my Text%' 
// AND page_title LIKE '% my page title %' 
// AND page_online = '1' and page_site ='29'
0 голосов
/ 03 марта 2011
$array = array('title' => $match, 'page1' => $match, 'page2' => $match);

$this->db->like($array);

// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...