Laravel 'where' 中的数字比较不起作用

Laravel number comparison in 'where' not working

我有一个 Laravel 5.1 应用程序,但在使用 'where' 进行数值比较时遇到了问题。 具体来说,我正在尝试做:

{{\App\Items::all()->where('paid_price','>',0)->count()}}

paid_price的SQL'type'是'decimal(8,2)'。 有几个 Item 行,其中 paid_price 实际上大于零,但上面的代码只产生 0。像下面这样不依赖数字比较的东西工作得很好 - 你能给我任何提示吗为什么 > 不起作用?非常感谢

{{\App\Items::all()->where('other_column','some_value')->count()}}

我的商品 class 的代码如下:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Items extends Model {
protected $fillable =['gateway','paid_price','payment_date','auth_date','charge_date','refunded_date'];
protected $dates = ['payment_date','auth_date','charge_date','refunded_date'];
public function setUserIdAttribute($value)
{
    $this->attributes['user_id'] = $value ?: null;
}
}

尝试使用方法 toSql() 调试 SQL,这样您就可以看到 SQL 查询,并且可以从客户端或 MySQL 之类的前端执行它Workbench:

{{ \App\Items::all()->where('paid_price','>',0)->count()->toSql() }}

您的 where 子句中的比较应该可以正常工作。只需删除 all().

\App\Items::where('paid_price','>',0)->count()

如果你指定all(),它首先会return一个Items个对象的数组,所以当你调用where()函数时,会导致查询错误数组 returned