Отображение конкретного красноречивого запроса в представлении индекса ресурса nova
Я хочу отобразить следующее красноречивое в индексном представлении для ресурса nova
Post::where('frontpage', true)->get()
И выполнить операции CRUD после модели, как я могу это сделать?
2 ответа
Решение
Вы можете просто переопределить indexQuery
вашего ресурса Nova, Ссылка
/**
* Build an "index" query for the given resource.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function indexQuery(NovaRequest $request, $query)
{
return $query->where('frontpage', true);
}
Нова использует концепцию линз, чтобы сделать это.
Создайте новый объектив из командной строки:
php artisan nova:lens IsFrontpage
Изменить query()
метод в app/Nova/Lenses/IsFrontpage.php
:
public static function query(LensRequest $request, $query)
{
return $request->withOrdering($request->withFilters(
$query->where('frontpage', '=', true)
));
}
Прикрепите линзу к ресурсу:
public function lenses(Request $request)
{
return [
new IsFrontpage()
];
}
Доступ к объективу в админ-панели Nova: /nova/resources/posts/lens/is-frontpage
Присмотритесь к документации Nova, чтобы также настроить настройку URL (см. uriKey()
) и столбцы (см. fields()
).