You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:15:02