我正在尝试进行数据库查询,搜索当前级别低于低库存级别的所有项目。运行查询时,我没有得到任何结果,我不确定原因。
这是我的查询
public static function getLowStockItemsCache()
{
dd(\DB::table('items')->where('current_level', '<', 'low_stock_level')->get());
}
当我死了并抛弃它时,我得到一个空集合。
在我的数据库中,我有以下记录
这两个字段都设置为int(11)
如果我反向查询,我会得到所有13条记录。
我错过了一些小事,因为它让我很困惑,应该很简单。
答案 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”技巧