Laravel数字比较'其中'不工作

时间:2016-07-28 22:49:09

标签: php sql laravel laravel-5 laravel-5.1

我有一个Laravel 5.1应用程序,而且我遇到了一个'其中'用数字比较。 具体来说,我正在尝试:

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

SQL'类型' paid_price是'十进制(8,2)'。 有几个项目行,其中paid_price实际上大于零,但上面的代码只产生0.如下所示,不依赖于数值比较的工作很好 - 你能给我任何关于为什么这样做的提示>不工作?非常感谢

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

我的Items类的代码如下:

<?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;
}
}

2 个答案:

答案 0 :(得分:3)

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

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

如果指定all(),它将首先返回Items个对象的数组,因此当您调用where()函数时,它将导致对返回的数组的错误查询

答案 1 :(得分:0)

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

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