【问题标题】:Display specific eloquent query in nova resource index view在 nova 资源索引视图中显示特定的 eloquent 查询
【发布时间】:2019-05-22 17:50:46
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试创建lense 来自定义底层的雄辩查询?
  • 不,但我会考虑,thanx 的提示 ;)

标签: laravel laravel-5 laravel-nova


【解决方案1】:

您可以简单地覆盖您的 Nova 资源的 indexQueryReference

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

【讨论】:

    【解决方案2】:

    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 slug(请参阅 uriKey())和列(请参阅 fields())。

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 2019-02-14
      • 1970-01-01
      • 2019-05-11
      • 2020-07-01
      • 2021-07-02
      • 1970-01-01
      • 2021-10-21
      • 2021-03-06
      相关资源
      最近更新 更多