Laravel“小于”查询未显示预期结果

时间:2015-11-19 12:15:51

标签: php mysql laravel eloquent

我正在尝试进行数据库查询,搜索当前级别低于低库存级别的所有项目。运行查询时,我没有得到任何结果,我不确定原因。

这是我的查询

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

当我死了并抛弃它时,我得到一个空集合。

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

enter image description here

这两个字段都设置为int(11)

如果我反向查询,我会得到所有13条记录。

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

2 个答案:

答案 0 :(得分:12)

第三个参数是value参数,这意味着在构建查询时将对其进行转义以避免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());

答案 1 :(得分:-1)

Laravel对“where”子句使用3步参数,

criteria.addIn("catName", catNames);

默认情况下,第二个arg通常是默认等号,表示第一个arg等于第三个arg,

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

当您找到此逻辑时,您就会理解“where”技巧