我有一个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;
}
}
答案 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()}}