2016-07-28 16 views
3

Ich habe eine Laravel 5.1 App, und habe Probleme mit einem "wo" mit einem numerischen Vergleich. Insbesondere versuche ich zu tun:Laravel-Zahlenvergleich in "wo" funktioniert nicht

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

Der SQL 'Typ' von paid_price ist 'dezimal (8,2)'. Es gibt mehrere Item-Zeilen, in denen der paided_price tatsächlich größer als Null ist, aber der obige Code ergibt nur 0. Sachen wie die folgenden, die nicht auf numerischen Vergleichen beruhen, funktionieren gut - können Sie mir irgendwelche Tipps geben, warum das> funktioniert nicht? Vielen Dank

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

Der Code für meine Artikel Klasse ist unten:

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

Antwort

3

Der Vergleich in Ihrer where Klausel sh könnte richtig funktionieren. Entfernen Sie einfach die all().

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

Wenn Sie all() angeben, wird es zunächst eine Reihe von Items Objekten zurück, so dass, wenn Sie where() Funktion aufgerufen wird, wird es zu falscher Abfrage führt auf dem Array

zurück
0

Versuchen Sie, die SQL debuggen die Methode „toSql()“ verwendet, so dass Sie die SQL-Abfrage sehen können, und Sie können ausführen von einem Client oder Frontend wie MySQL Workbench:

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

Verwandte Themen