我在laravel中有这个代码来获得即将耗尽的产品。
$productos = DB::table('productos')
->where('producto_minimo', '>=', 'producto_cantidad')
->get();
我得到的是以下结果
这不是正确的结果。在MySql中,我得到了正确的结果SELECT * FROM productos where producto_minimo >= producto_cantidad;
更新
查询日志 - DB::getQueryLog()
- 显示此
2 =>
array (size=3)
'query' => string 'select * from `productos` where `producto_minimo` >= ?' (length=54)
'bindings' =>
array (size=1)
0 => string 'producto_cantidad' (length=17)
'time' => float 1
答案 0 :(得分:4)
我认为您必须使用whereRaw
方法:
$productos = DB::table('productos')
->whereRaw('producto_minimo >= producto_cantidad')
->get();
您的查询会将producto_minimo
列中的值与字符串' producto_cantidad'
查看advanced wheres的Eloquents文档:
DB::table('users')
->whereExists(function($query)
{
$query->select(DB::raw(1))
->from('orders')
->whereRaw('orders.user_id = users.id');
})
->get();
上面的查询将生成以下SQL:
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
)