在 laravel 中使用 allowedFilter() 来建立关系

问题描述 投票:0回答:1

你好,我正在尝试从关系表中过滤数据。 就像桌子一样

TrainingVideo(table)
   -> Media(table)

类似代码


$a = QueryBuilder::for(TrainingVideo::class)
            ->with('grade','media')
            ->allowedFilters(['name', 'grade_id'], allowedFilters(AllowedFilter::exact('media.is_help_center', null, false))
            ->get();

TrainingVideo 字段是 name 和grade_id,media 字段是 is_help_center。

尝试过滤数据并收到类似错误

“不允许使用请求的过滤器

name, grade_id
。允许的过滤器为
is_help_center
。” 从此链接引用 allowedfilter https://spatie.be/docs/laravel-query-builder/v3/features/filtering#:~:text=An%20allowed%20filter%20can%20be,AllowedFilter%3A%3Apartial() %20 个过滤器。

php laravel laravel-query-builder
1个回答
1
投票

我真的不明白你在哪里看到了这个?

allowedFilters(AllowedFilter::exact('media.is_help_center', null, false)

也许我错过了一些东西,但据我所知,没有

allowedFilters
辅助功能。

无论如何,你也许可以做到

$a = QueryBuilder::for(TrainingVideo::class)
            ->with('grade','media')
            ->allowedFilters(
                array_merge(
                    ['name', 'grade_id'],
                    AllowedFilter::exact('media.is_help_center', null, false)
                )
            )
            ->get();

不要忘记在文件顶部使用

 导入 
AllowedFilter

use Spatie\QueryBuilder\AllowedFilter;

一旦设置完毕,就应该可以工作了。

© www.soinside.com 2019 - 2024. All rights reserved.