【问题标题】:Method Illuminate\Database\Eloquent\Collection::addEagerConstraints does not exist LARAVEL方法 Illuminate\Database\Eloquent\Collection::addEagerConstraints 不存在 LARAVEL
【发布时间】:2020-05-13 17:52:29
【问题描述】:

我需要帮助,没有发现任何可疑之处 :c 感谢您的帮助!

Error Collection::addEagerConstraints does not exist 出现在调用之后:

 public function show(Request $request, User $user)
 {
        $user->load('permissions');
        dd($with);
        return UserResource::make($user);
 } 

用户模型:

class User extends Authenticatable
{
    (...)

    //////////////////////////////////////////////////////////////////////////////////////////
    ///
    ///  Relationships
    ///
    //////////////////////////////////////////////////////////////////////////////////////////

    /**
     * Relationship to permissions
     *
     * @return RolePermissions
     */
    public function permissions()
    {
        return $this->role()->first()->permissions;
    }
}

【问题讨论】:

  • try : return $this->role()->with('permissions')->get()-> first()->permissions;
  • 你有桌子permissions吗?还是permissions 只是roles 中的一列?
  • @OMR 那还是不行;您不能在非关系上调用 ->load(),除非 Permission 是模型(我怀疑它不是),否则需要更改此代码。
  • 如果你使用标准的 laravel 用户,你可以简单地删除你的“权限”关系并使用现成的关系: $permissionNames = $user->getPermissionNames(); // 名称字符串集合 $permissions = $user->permissions; // 获取用户权限
  • 谢谢我解决了问题:) 非常感谢

标签: php laravel


【解决方案1】:

如果你使用的是标准 laravel 用户, 您必须删除您的“权限”关系并使用现成的关系:

$permissionNames = $user->getPermissionNames(); // collection of name strings 
$permissions = $user->permissions; // get the user permissions 

如果您想要一个拥有其权限的用户:

$user->load('permissions');

更多细节在:

https://docs.spatie.be/laravel-permission/v3/basic-usage/basic-usage/

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 2021-05-30
    • 2020-03-25
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2021-09-08
    相关资源
    最近更新 更多