php 通过控制器方法apiResource删除Laravel全局作用域

k5ifujac  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(134)

我在我的一些模型中使用全局作用域。我希望能够在控制器级别动态地移除作用域逻辑。我的作用域应用于我的PingtreeGroup模型,当我试图通过我的控制器show方法移除全局作用域时,我得到了一个错误。
如果不使用GlobalScope(),函数Illuminate\Database\Eloquent\Builder::的参数太少,传递了0个

/**
 * Display the specified resource.
 *
 * @return \Illuminate\Http\Response
 */
public function show(Company $company, PingtreeGroup $pingtreeGroup)
{
    $this->authorize('view', $pingtreeGroup);

    $pingtreeGroup = $pingtreeGroup->withoutGlobalScope()->load([
        'pingtree_group_entries',
        'pingtree_group_entries.pingtree' => function ($query) {
            $query->withCount('pingtree_entries');
        },
        'pingtree_group_entries.pingtree.pingtree_entries',
        'pingtree_group_entries.pingtree.pingtree_entries.buyer_tier',
        'pingtree_group_entries.pingtree.pingtree_entries.buyer_tier.buyer',
    ])->loadCount('pingtree_group_entries');

    return new ApiSuccessResponse($pingtreeGroup);
}

我错过了什么?

zhte4eai

zhte4eai1#

尝试将全局作用域的类名添加到withoutGlobalScope()方法中:

$pingtreeGroup->withoutGlobalScope(MyGlobalScope::class)

您可以在文档中阅读有关删除全局作用域的详细信息

相关问题