Отображение конкретного красноречивого запроса в представлении индекса ресурса 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()).

Другие вопросы по тегам