2015-03-21 2 views
0

Это мой оригинальный SQL запросPHP CodeIgniter выберите запрос

select 'car' as type,id,title,status from car_product 
union 
select 'van' as type,id,title,status from van_product 

Теперь я хочу, чтобы запустить этот запрос с помощью CodeIgniter, поэтому я стараюсь использовать это один

$this -> db -> select('`car` As type,id,title,status'); 
$this -> db -> from('car_product'); 
$this -> db -> where('status =',$status); 
$query_car = $this -> db -> get()->result(); 

$this -> db -> select('`van` As type,id,title,status'); 
$this -> db -> from('van_product'); 
$this -> db -> where('status =',$status); 
$query_van = $this -> db -> get()->result(); 

return array_merge($query_car, $query_van); 

, но это не работает, пожалуйста, можете ли вы помочь?

+2

http://stackoverflow.com/questions/2040655/union-query-with-codeigniters-active-record- pattern – sinisake

+0

«union» не проблема, проблема в том, что «автомобиль» как тип «часть», он не поддерживается в запросе select. Другое дело, что я не хочу использовать «this-> db-> query» this –

+1

Можете ли вы написать сообщение об ошибке и распечатать каталог '$ this-> db-> last_query()' –

ответ

1

Вы можете использовать - метод> запрос() непосредственно без использования QueryBuilder для этого.

$query = $this->db->query("select 'car' as type,id,title,status from car_product union select 'van' as type,id,title,status from van_product"); 

Тогда вы можете иметь дело как вы имеете дело с другими запросами

: например

return $query->result(); 
+0

да думаю, что мне нужно использовать запрос $ this-> db-> ". спасибо –

0

Попробуйте удалить '=',:

например: $ статус = 'Chamara'

$this->db->where("status",$status); 

// Выдает: WHERE 'статус' = 'Chamara'

Предлагайте: Вы можете использовать массивы. Может быть, в будущем вам нужно установить более одного условия

$condition = array("status"=>$status); 
$this->db->where($condition); 

Предлагайте 2: Используйте $ this-> db-> получить ('van_product'); вместо

$this -> db -> from('van_product'); 
$query_van = $this -> db -> get()->result(); 

// Выдает: SELECT * FROM van_product

+0

спасибо Deusmar, но моя фактическая проблема - '$ this -> db -> select (''car' As type, id, title, status'); $ this -> db -> from ('car_product'); $ this -> db -> где ('status =', 'P'); $ query_car = $ this -> db -> get() -> result(); 'codeignator не поддерживал' '' car' As type' –

1

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

$this -> db -> select('"car" type,id,title,status',false); 
$this -> db -> from('car_product'); 
$this -> db -> where('status =',$status); 
$query_car = $this -> db -> get()->result(); 

$this -> db -> select('"van" type,id,title,status',false); 
$this -> db -> from('van_product'); 
$this -> db -> where('status =',$status); 
$query_van = $this -> db -> get()->result(); 

return array_merge($query_car, $query_van); 

https://ellislab.com/codeigniter/user-guide/database/active_record.html

$ this-> db-> выберите(); имеет необязательный второй параметр, который позволяет вам использовать составной оператор выбора, когда это необходимо.

Примечание: вы не будете защищены от обратных кавычек, когда вы установите параметр в «ложный»

+0

Спасибо, это правильный ответ –

+0

@ChamaraMaduranga Принять ответ (зеленый тик слева, чтобы ответить), если ответ помог. Это закроет вопрос и поможет другим людям в будущем. –