Laravel Nova метрики фильтрации - PullRequest
0 голосов
/ 27 августа 2018

У меня есть модель с именем Property, которая имеет флаг 'active'.Я хочу показатель в верхней части моего ресурса, который показывает количество активных свойств.

Мой метод расчета такой же, как в документе, но он показывает все свойства, а не активные:

public function calculate(Request $request)
{
    return $this->count($request, Property::class);
}

Как добавить фильтр?

Я пробовал предложение where:

public function calculate(Request $request)
{
    return $this->count($request, Property::class)->where('active','=',1);
}

И область запроса:

public function calculate(Request $request)
{
    return $this->count($request, Property::class)->active();
}

Я думал, что смогу использовать фильтр Nova, который я установилна странице списка ресурсов, но это тоже не сработало.Я уверен, что это действительно легко, но я не решил это.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете использовать каждый тип экземпляра Eloquent \ Builder в параметре $ model.

Вместо:

public function calculate(Request $request)
{
    return $this->count($request, Property::class);
}

Установить область действия для вашей модели

App\Property.php
...
public function scopeActive($query)
{
    return $query->where('active', 1);
}
public function scopeInactive($query)
{
    return $query->where('active', 0);
}

И используйте эту область как параметр $ model в вашем методе вычисления, потому что вызов области возвращает Eloquent \ Builder Instance

public function calculate(Request $request)
{
    return $this->count($request, Property::active());
    // return $this->count($request, Property::inactive());
}

Edit Конечно, вы можете сделатьВстроенный вызов Eloquent Builder:

public function calculate(Request $request)
{
    return $this->count($request, Property::where('active', 1));
}
...