在 nova 资源索引视图中显示特定的 eloquent 查询

Display specific eloquent query in nova resource index view

我想在 nova 资源的索引视图中显示以下内容eloquent

Post::where('frontpage', true)->get()

并执行 Post 模型 CRUD 操作,我该怎么做?

Nova 利用 lenses 的概念来做到这一点。

从命令行创建一个新镜头:

php artisan nova:lens IsFrontpage

修改app/Nova/Lenses/IsFrontpage.php中的query()方法:

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 documentation 以自定义 URL 子项(参见 uriKey())和列(参见 fields())。

您可以简单地覆盖 indexQuery Nova 资源,Reference

/**
 * 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);
}