2016-11-27 4 views
2

Я пытаюсь привести в порядок свой необработанный запрос и я заинтересован в WordPress мета ключ и мета значениеLaravel Query Builder - Advanced Присоединяйтесь и выберите

Как сделать это с Laravel Query Builder?

META TABLE == 
meta_id | post_id | meta_key | meta_value 
1  | 101  | quantity | 8 
2  | 101  | price | 100 
3  | 102  | quantity | 7 
4  | 102  | price | 56 
5  | 103  | quantity | 12 
6  | 103  | price | 256 

POST TABLE == 
post_id | about 
101  | Pencil | Luxurious pencil only for you 
102  | Eraser | All your mistakes, gone! 
103  | Pen  | Unrivaled penmanship, stronger than sword. 

Запрос:

select 
    p.post_id, 
    p.name, 
    p.about, 
    m1.meta_value, 
    m2.meta_value 
from post_table p 
    inner join meta_table m1 
     on m1.post_id = p.post_id and m1.meta_key = 'quantity' 
    inner join meta_table m2 
     on m2.post_id = p.post_id and m2.meta_key = 'price' 
where CAST(m1.meta_value as int) < 10 
order by CAST(m1.meta_value as int) asc 

Спасибо

ответ

0

Я строю ниже запрос с помощью Database: Query Builder, и я надеюсь, что это будет работать для вас. Я не проверял это.

DB::table('post_table AS p') 
      ->select('p.post_id', 'p.name', 'p.about', 'meta_value', 'meta_value') 
      ->join('meta_table AS m1','m1.post_id','=','p.post_id') 
      ->where('m1.meta_key', 'quantity') 
      ->join('meta_table AS m2','m2.post_id','=','p.post_id') 
      ->where('m2.meta_key', 'price') 
      ->where(DB::raw('CAST(m1.meta_value AS INT)','<',10) 
      ->orderBy(DB::raw('CAST(m1.meta_value AS INT)'), 'asc') 
      ->get(); 
Смежные вопросы