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

时间:2018-12-22 19:18:11

标签: laravel laravel-5 laravel-nova

我想在nova资源的索引视图中显示以下雄辩

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

并执行Post model CRUD操作,该怎么做?

2 个答案:

答案 0 :(得分:3)

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

从命令行创建新镜头:

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 documentation,还可以自定义URL链接(请参阅uriKey())和列(请参见fields())。

答案 1 :(得分:2)

您只需覆盖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);
}