如何在Statamic中通过Query Scope按组筛选摄影师用户?
解决Statamic用户字段筛选摄影师用户的问题
要实现仅筛选出groups数组包含photographers的用户,你可以按以下步骤完善代码:
1. 完善Query Scope的查询逻辑
在你的PhotographerScope类中,使用whereJsonContains方法匹配JSON格式的groups字段(该方法适配Statamic存储用户数据的JSON结构,需确保你的数据库支持JSON操作,比如MySQL 5.7+):
<?php namespace App\Scopes; use Statamic\Query\Scopes\Scope; class PhotographerScope extends Scope { /** * Apply the scope. * * @param \Statamic\Query\Builder $query * @param array $values * @return void */ public function apply($query, $values) { $query->whereJsonContains('groups', 'photographers'); } // 可选:为筛选器添加后台显示标签 public function label() { return '仅显示摄影师'; } }
2. 注册Query Scope
打开app/Providers/AppServiceProvider.php,在boot方法中注册这个Scope,让Statamic的用户查询能识别它:
use App\Scopes\PhotographerScope; use Statamic\Facades\User; public function boot() { User::queryScopes()->add(PhotographerScope::class); }
3. 在资源蓝图中绑定Scope
最后在你的资源蓝图配置里,给users字段指定使用这个Scope:
fields: users: type: users display: 摄影师 scope: photographer
完成以上配置后,该users字段就只会列出属于photographers用户组的用户了。
内容的提问来源于stack exchange,提问作者Eliot Hertenstein
相关产品推荐
相关产品推荐

