Query

Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.

# Filter

Часто необходимо изначально отфильтровать выдачу со списком записей.

В целом, вы можете легко переопределить query builder в ресурсе.

namespace MoonShine\Resources;
 
use Illuminate\Contracts\Database\Eloquent\Builder;
 
class PostResource extends Resource
{
//...
public function query(): Builder
{
return parent::query()
->where('active', true);
}
//...
}

# Order

Переопределив метод performOrder() можно кастомизировать сортировку элементов.

namespace MoonShine\Resources;
 
use Illuminate\Contracts\Database\Eloquent\Builder;
 
class PostResource extends Resource
{
//...
public function performOrder(Builder $query, string $column, string $direction): Builder
{
return $query->orderBy(
$column,
$direction
);
}
//...
}

# Scopes

В Laravel также есть удобный функционал scopes, и его как раз можно применять в рамках админ-панели MoonShine.

Для начала необходимо создать нужные scopes.

php artisan make:scope ActiveUserScope
namespace MoonShine\Resources;
 
use App\Models\Scopes\ActiveUserScope;
 
class PostResource extends Resource
{
//...
public function scopes(): array
{
return [
new ActiveUserScope()
];
}
//...
}