2016-07-28 2 views
3

У меня есть приложение Laravel 5.1, и у меня возникают проблемы с «где» с численным сравнением. Конкретно я пытаюсь сделать:Сравнение номеров Laravel в 'где' не работает

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

SQL, 'тип' paid_price является "десятичной (8,2). Существует несколько строк элементов, где платная_ценка на самом деле больше нуля, но приведенный выше код просто дает 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; 
} 
} 

ответ

3

Сравнение в вашей статье where sh ould работает правильно. Просто удалите all().

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

Если вы укажете all(), он будет первым возвращать массив Items объектов, поэтому, когда вы назвали where() функцию, то это приведет к неправильному запроса на возвращаемый массив

0

Try для отладки SQL с помощью метода «toSql()», так что вы можете увидеть запрос SQL, и вы можете выполнить это от клиента или внешнего интерфейса, например MySQL Workbench:

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

Смежные вопросы