Laravel Eloquent功能不起作用(?)

时间:2014-11-01 11:09:43

标签: php laravel eloquent

如果获得以下数据库表: db-table

现在我想显示哪些行" inventory_warning"比"库存更重要"领域。像第二个结果如下所示:

screenshot

在我的第一个例子中,我使用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

这里发生了什么?这是一个可能的雄辩错误还是我做错了什么?

1 个答案:

答案 0 :(得分:4)

据我所知,where函数不支持比较两个数据库字段。 您必须使用whereRaw

Product::whereRaw('inventory_warning > inventory')->get();