2015-11-19 43 views
0

我正在尝试进行数据库查询,其中我搜索所有具有低于低库存水平的当前级别的项目。当运行查询时,我得不到结果,我不知道为什么。Laravel其中“少于”查询未显示预期结果

这是我的查询

public static function getLowStockItemsCache() 
{ 
     dd(\DB::table('items')->where('current_level', '<', 'low_stock_level')->get()); 
    } 

当我死,这个倾倒我得到一个空的集合。

在我的数据库,我有以下记录

enter image description here

在设定这些领域无论是在INT(11)

如果我扭转查询我得到的所有13条记录。

我错过了一些小事,因为它让我感到困惑,应该很简单。

+0

尝试'whereRaw('CURRENT_LEVEL < low_stock_level')'我想它是比较字符串''low_stock_level''而不是对列。我认为'where()'中的第三个参数必须是一个值,不能是列名。 –

回答

8

第三个参数是值参数,这意味着在构建查询以避免SQL注入时它将被转义。如果要比较两列,你必须明确告诉查询生成器的查询部分不应该被处理,或者通过使用whereRaw传递原始SQL条件:

\DB::table('items')->whereRaw('current_level < low_stock_level')->get()); 

或使用DB::raw()为只是,所以它没有逃过值:

\DB::table('items')->where('current_level', '<', DB::raw('low_stock_level'))->get()); 
+0

这是完全有道理的。谢谢 –

+0

非常欢迎。 – Bogdan

-1

Laravel使用3步争论的 “where” 子句,

Pair::where('1st','2nd','3rd') 

默认日Ë第二ARG通常默认等号,说1号ARG等于第三个参数,

Pair::where('name', 'john')->get(); 

Pair::where('stock', '<', '100')->get(); 

当你发现这个逻辑,那么你理解“其中”花样