2016-11-27 4 views
2

Ich versuche, meine rohe Abfrage aufzuräumen und ich bin interessiert in Wordpress Meta-Taste und Meta-WertLaravel Query Builder - Erweiterte Join und wählen

Wie dies zu tun mit 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. 

Abfrage:

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 

Danke

Antwort

0

Ich baue die unter Abfrage mit Hilfe von Database: Query Builder und ich hoffe, dass dies für Sie arbeiten. Ich werde das nicht getestet.

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(); 
Verwandte Themen