为什么laravel查询没有返回正确的结果?

时间:2014-08-04 15:44:24

标签: php mysql laravel-4


我在laravel中有这个代码来获得即将耗尽的产品。

$productos = DB::table('productos')
                  ->where('producto_minimo', '>=', 'producto_cantidad')
                  ->get();

我得到的是以下结果

Laravel Result

这不是正确的结果。在MySql中,我得到了正确的结果SELECT * FROM productos where producto_minimo >= producto_cantidad;

MySql Result

更新
查询日志 - 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

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
)