如果获得以下数据库表:
现在我想显示哪些行" inventory_warning"比"库存更重要"领域。像第二个结果如下所示:
在我的第一个例子中,我使用Eloquent执行where语句并尝试获取行,但它不会产生正确的结果(它会检索所有行)。我的第二个例子显示了使用PHP-if语句完成的检查,它可以工作,但当表包含更多数据时效率非常低。
缩短代码:
<?php $products = Product::where('inventory_warning', '>', 'inventory')->get();?>
<tr>
<th colspan="3">First results:</th>
</tr>
@foreach($products as $product)
<tr>
<td># {{ $product->id }} - {{$product->item->name}}</td>
<td>{{ $product->inventory }}</td>
<td>{{ $product->inventory_warning }}</td>
</tr>
@endforeach
<?php $products = Product::all();?>
<tr>
<th colspan="3">Second results:</th>
</tr>
@foreach($products as $product)
@if($product->inventory_warning > $product->inventory)
<tr>
<td># {{ $product->id }} - {{$product->item->name}}</td>
<td>{{ $product->inventory }}</td>
<td>{{ $product->inventory_warning }}</td>
</tr>
@endif
@endforeach
这里发生了什么?这是一个可能的雄辩错误还是我做错了什么?
答案 0 :(得分:4)
据我所知,where
函数不支持比较两个数据库字段。
您必须使用whereRaw
Product::whereRaw('inventory_warning > inventory')->get();