我正在尝试整理我的原始查询,我对wordpress元键和元值感兴趣
如何使用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 :(得分: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();