Laravel Eloquent:通过具有多个关系的枢轴将表绑定到另一个表

奥杰科技

让我首先为模糊的标题道歉,我找不到合适的方法来表达它。

至于问题,在这种情况下,我想将用户绑定到具有特定角色的项目。我正在尝试通过以下数据透视表执行此操作:

|user_has_projects|
|-----------------|
|id               |
|user_id          |
|projectrole_id   |
|project_id       |
|created_at       |
|updated_at       |
|deleted_at       |
|-----------------|

usersprojects并且projectroles表是你会从该表中会发生什么。

当前每个模型的 Eloquent 关系如下:

Project.php

public function users()
 {
   return $this->belongsToMany(
      "App\User",
      "user_has_projects"
   )->withPivot(
      "user_id"
   )->withTimestamps();
}

public function userProjects()
{
    return $this->hasMany(
        "App\UserProjects",
        "project_id",
        "id"
    );
}

Users.php

public function projects()
 {
   return $this->belongsToMany(
      'App\Project',
      'user_has_projects'
   )->withPivot(
      'project_id'
   );
}

public function projectRole($id)
{
    return $this->belongsToMany(
        "App\ProjectRole",
        "user_has_projects"
    )->withPivot(
        "projectrole_id"
    )->wherePivot(
        "project_id",
        '=',
        $id
    );
}

ProjectRole.php

public function user()
{
    return $this->belongsToMany(
        "App\User",
        "user_has_projects"
    )->withPivot(
        "user_id"
    )->withTimestamps();
}

public function projects()
{
    return $this->belongsToMany(
        "App\Project",
        "user_has_projects"
    )->withPivot(
        "project_id"
    )->withTimestamps();
}

UserProjects.php

public function projectRoles()
{
    return $this->belongsTo(
        'App\ProjectRoles'
    );
}

public function users()
{
    return $this->belongsTo(
        'App\User'
    );
}

public function projects()
{
    return $this->belongsTo(
        'App\Project'
    );
}

现在,如果我想检索绑定到项目的所有用户,然后检索他们在项目中的角色,我将首先调用$aBoundUsers = $oProject->users();然后遍历这些用户以获取他们的角色

foreach($aBoundUsers as $oUser) {
$role = $oUser->projectRole($oProject->id); 
}

但是,当我打电话时,$oUser->projectRole(...)我收到以下错误:“在布尔值上调用成员函数 projectRole()”.. 经过一番彻底的搜索后,我发现唯一返回的是{"withTimestamps":true}

我在这里做错了什么?我找到了一些关于具有多个模型的数据透视表的解决方案,但没有一个以某种方式起作用。

乔纳斯·施陶登迈尔

$oProject->users()只返回关系,$oProject->users返回结果。

更改UserProjects模型的父类

class UserProjects extends \Illuminate\Database\Eloquent\Relations\Pivot

然后调整你的Project模型:

public function users()
{
    return $this->belongsToMany(
        "App\User",
        "user_has_projects"
    )->withPivot(
        "user_id", "projectrole_id"
    )->using("App\UserProjects")
    ->withTimestamps();
}

然后你可以像这样访问你的角色:

foreach($oProject->users as $oUser) {
    $role = $oUser->pivot->projectRoles; 
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel流明另一个表的id关系

来自分类Dev

如何添加具有引用laravel中另一个表的外键值的表?

来自分类Dev

Laravel中从一个表到另一个表中相同字段的多个外键

来自分类Dev

Laravel:通过另一个表获取模型

来自分类Dev

在laravel 5中将一个表复制到另一个表

来自分类Dev

Laravel 5.1-在一个表中的多个字段上具有hasMany关系

来自分类Dev

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

来自分类Dev

Laravel Eloquent-获取属于另一个表的表的条目

来自分类Dev

laravel 从用户到另一个的转移关系

来自分类Dev

如何在另一个表上使用 Laravel Eloquent whereIn 函数?

来自分类Dev

从关系laravel中的另一个表获取id

来自分类Dev

Laravel Eloquent 和 Mysql 加入一个表,如果另一个加入为空

来自分类Dev

Laravel将另一个关系附加到现有的Model对象

来自分类Dev

Laravel DB查询构建器“ whereNotIn”到另一个表

来自分类Dev

从另一个表获取数据到刀片 foreach - Laravel

来自分类Dev

Laravel中另一个表的orderBy属性

来自分类Dev

如何匹配两个表并将其插入到laravel 5.4中的另一个表中?

来自分类Dev

将数据移动到Laravel中的另一个表

来自分类Dev

将动态创建的复选框值存储在 Laravel 的另一个表中

来自分类Dev

Laravel - 在发布时将帖子 ID 插入另一个表

来自分类Dev

Laravel:选择条件在另一个表中的所有电影

来自分类Dev

Laravel通过另一个关系检索关系数据

来自分类Dev

使用 orWhereHas laravel eloquent 查询检查另一个表中是否存在数据

来自分类Dev

如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

来自分类Dev

Eloquent / Laravel-将WHERE子句放在具有链接关系的引用表上

来自分类Dev

将带有外键约束的用户表填充到 Laravel 5.4 中的另一个表上

来自分类Dev

如何通过急于在Laravel中加载来选择另一个表中的字段

来自分类Dev

php-如何在PHP Laravel Excel中将工作表复制到另一个?

来自分类Dev

从表中选择,其中列从laravel中的另一个表中选择

Related 相关文章

  1. 1

    Laravel流明另一个表的id关系

  2. 2

    如何添加具有引用laravel中另一个表的外键值的表?

  3. 3

    Laravel中从一个表到另一个表中相同字段的多个外键

  4. 4

    Laravel:通过另一个表获取模型

  5. 5

    在laravel 5中将一个表复制到另一个表

  6. 6

    Laravel 5.1-在一个表中的多个字段上具有hasMany关系

  7. 7

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

  8. 8

    Laravel Eloquent-获取属于另一个表的表的条目

  9. 9

    laravel 从用户到另一个的转移关系

  10. 10

    如何在另一个表上使用 Laravel Eloquent whereIn 函数?

  11. 11

    从关系laravel中的另一个表获取id

  12. 12

    Laravel Eloquent 和 Mysql 加入一个表,如果另一个加入为空

  13. 13

    Laravel将另一个关系附加到现有的Model对象

  14. 14

    Laravel DB查询构建器“ whereNotIn”到另一个表

  15. 15

    从另一个表获取数据到刀片 foreach - Laravel

  16. 16

    Laravel中另一个表的orderBy属性

  17. 17

    如何匹配两个表并将其插入到laravel 5.4中的另一个表中?

  18. 18

    将数据移动到Laravel中的另一个表

  19. 19

    将动态创建的复选框值存储在 Laravel 的另一个表中

  20. 20

    Laravel - 在发布时将帖子 ID 插入另一个表

  21. 21

    Laravel:选择条件在另一个表中的所有电影

  22. 22

    Laravel通过另一个关系检索关系数据

  23. 23

    使用 orWhereHas laravel eloquent 查询检查另一个表中是否存在数据

  24. 24

    如何设置自动完成以显示来自 laravel 中另一个表的数据(单对多关系)

  25. 25

    Eloquent / Laravel-将WHERE子句放在具有链接关系的引用表上

  26. 26

    将带有外键约束的用户表填充到 Laravel 5.4 中的另一个表上

  27. 27

    如何通过急于在Laravel中加载来选择另一个表中的字段

  28. 28

    php-如何在PHP Laravel Excel中将工作表复制到另一个?

  29. 29

    从表中选择,其中列从laravel中的另一个表中选择

热门标签

归档