使用Laravel Eloquent获取多对多关系中非链接模型的列表

格拉斯

我有一个使用Laravel 4的User-Roles模型,其中用户可以使用Eloquent扮演许多角色。我可以使用以下代码轻松访问与用户链接的所有角色:

class User extends Model {
    protected $table = 'user';
    protected $fillable = array('name');

    public function rolesLinked() {
        return $this->hasMany('App\UserRoleLink', 'user_id');
    }
}

我一直在尝试获取未链接到用户的角色,以在选择框中显示在特定用户的页面上。使用此功能,包括在User类中。

public function rolesNotLinked() {
    $user = this
    $roles = Roles::whereDoesntHave('App\UserRoleLink',function($query) use ($user){
        $query->where('user_id',$user->id);
    });
}

问题是,调用此函数会给我以下错误。

Call to undefined method Illuminate\Database\Query\Builder::App\UserRoleLink()

我尝试使用具有<1的has来查看该函数是否有问题,但是在阅读了此内容和在线源代码之后,该函数调用几乎完成了我尝试过的工作。

我的函数调用出了点问题,还是我弄乱了某个地方的配置?

供参考,这是我的其他Model类:

class UserRoleLink extends Model{
     protected $table = 'user_role_link';
     protected $fillable = array('role_id','user_id);

    public function role() {
        return $this->hasOne('App\Role', 'role_id');
    }
}

class Role extends Model{
     protected $table = 'role';
     protected $fillable = array('name');
}

编辑:我发现复制粘贴时,我被填充物弄乱了。它没有解决问题,但我想这还差了一步。

乔丹·普拉蒙顿

要使用whereDoesntHave方法,您必须在角色模型中添加关系。

class Role extends Model{
     protected $table = 'role';
     protected $fillable = array('name');

     public function UserRoles() {
         return $this->hasMany('App\UserRoleLink', 'id');
     }
}


同样,whereDoesntHave方法的第一个参数不是模型,而是关系的函数:

public function rolesNotLinked() {
    $user = this
    $roles = Roles::whereDoesntHave('UserRoles',function($query) use ($user){
        $query->where('user_id',$user->id);
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel> 使用 Eloquent 查询多对多关系

来自分类Dev

我想使用laravel模型建立多对多关系

来自分类Dev

Laravel 4-链接多对多关系

来自分类Dev

Laravel 5 – 根据模型和相关模型 ID 获取特定的多对多关系

来自分类Dev

Laravel从多对多关系中获取数据

来自分类Dev

如何使用 InlinePanel 以多对多关系链接 wagtail 中的两个页面模型

来自分类Dev

laravel 5.8 eloquent:有很多关系模型

来自分类Dev

Laravel多对多关系

来自分类Dev

Laravel多对多关系

来自分类Dev

与Laravel的多对多关系

来自分类Dev

使用Laravel查询多对多关系和更多数据(Lumen / Eloquent)

来自分类Dev

Laravel 5-访问多对多关系的特定模型

来自分类Dev

Laravel在同一模型上的多对多关系

来自分类Dev

如何在laravel模型中定义多对多关系?

来自分类Dev

Laravel 5.2查找基于多对多关系的模型

来自分类Dev

Laravel雄辩的三个模型之间的多对多关系

来自分类Dev

Laravel多对多关系-链接3个项目

来自分类Dev

使用多对多关系Laravel / Eloquent / Query builder时如何从另一个表中获取所有书籍

来自分类Dev

如何使用Eloquent ORM的多对多关系结果查询表?

来自分类Dev

如何在 Laravel 中使用 Eloquent 获取一对多关系的数据?

来自分类Dev

通过多对多关系获取 Laravel 模型过滤

来自分类Dev

Laravel:获取特定于多对多关系的数据透视

来自分类Dev

在Laravel多对多关系中按列获取行

来自分类Dev

Laravel从数据透视表获取数据的多对多关系

来自分类Dev

Laravel 5.5 使用多对多关系时如何获取最新的 N 条记录?

来自分类Dev

Laravel eloquent 模型关系

来自分类Dev

如何在Laravel中从多对多关系的一对多关系中获取项目?

来自分类Dev

laravel同步多对多关系

来自分类Dev

Laravel:订购多对多关系

Related 相关文章

  1. 1

    Laravel> 使用 Eloquent 查询多对多关系

  2. 2

    我想使用laravel模型建立多对多关系

  3. 3

    Laravel 4-链接多对多关系

  4. 4

    Laravel 5 – 根据模型和相关模型 ID 获取特定的多对多关系

  5. 5

    Laravel从多对多关系中获取数据

  6. 6

    如何使用 InlinePanel 以多对多关系链接 wagtail 中的两个页面模型

  7. 7

    laravel 5.8 eloquent:有很多关系模型

  8. 8

    Laravel多对多关系

  9. 9

    Laravel多对多关系

  10. 10

    与Laravel的多对多关系

  11. 11

    使用Laravel查询多对多关系和更多数据(Lumen / Eloquent)

  12. 12

    Laravel 5-访问多对多关系的特定模型

  13. 13

    Laravel在同一模型上的多对多关系

  14. 14

    如何在laravel模型中定义多对多关系?

  15. 15

    Laravel 5.2查找基于多对多关系的模型

  16. 16

    Laravel雄辩的三个模型之间的多对多关系

  17. 17

    Laravel多对多关系-链接3个项目

  18. 18

    使用多对多关系Laravel / Eloquent / Query builder时如何从另一个表中获取所有书籍

  19. 19

    如何使用Eloquent ORM的多对多关系结果查询表?

  20. 20

    如何在 Laravel 中使用 Eloquent 获取一对多关系的数据?

  21. 21

    通过多对多关系获取 Laravel 模型过滤

  22. 22

    Laravel:获取特定于多对多关系的数据透视

  23. 23

    在Laravel多对多关系中按列获取行

  24. 24

    Laravel从数据透视表获取数据的多对多关系

  25. 25

    Laravel 5.5 使用多对多关系时如何获取最新的 N 条记录?

  26. 26

    Laravel eloquent 模型关系

  27. 27

    如何在Laravel中从多对多关系的一对多关系中获取项目?

  28. 28

    laravel同步多对多关系

  29. 29

    Laravel:订购多对多关系

热门标签

归档