首页 > 解决方案 > Laravel-Lighthouse 范围未更新

问题描述

我有一个关于 Lighthouse 的查询,它正在使用@paginate另外 3 个范围的范围

这是我的查询

profiles(where: _ @whereConditions(columns: ["email"])): [User!]! @paginate(scopes: ["byOrganizationLoggedIn","byMatchingRole", "byAvailableMatching"]) @middleware(checks: ["auth:api"])

这些是我来自用户实体的范围。

   /**
     * @param [type] $query
     */
    public function scopeByOrganizationLoggedIn($query)
    {
        if ($organization = request()->user()->organization_id) {
            $query->where('organization_id', $organization);
        }
    }

    /**
     * @param [type] $query
     */
    public function scopeByMatchingRole(Builder $query)
    {
        if (request()->user()) {
            $query->whereHas('roles', function ($q) {
                $q->whereIn('name', ['Mentor', 'Mentee']);
            });
        }
    }

    /**
     * @param [type] $query
     */
    public function scopeByAvailableMatching(Builder $query)
    {
        if (request()->user()) {
            $query->whereDoesntHave('matchedProfiles', function (Builder $q) {
                $q->where('user_id', request()->user()->id);
            });
        }
    }

问题是我的最后一个范围byAvailableMatching没有被调用,如果我删除了其他范围之一,byOrganizationLoggedIn或者byMatchingRole它仍然进入实体方法。

我尝试使用重置灯塔缓存

php artisan lighthouse:clear-cache

但是查询和范围没有更新,它们返回相同的数据。

我是 Laravel 和 Lighthouse 的新手,如果您对按所有范围过滤查询有任何建议,请告诉我。

标签: phplaraveleloquentlighthouselaravel-lighthouse

解决方案


推荐阅读