Php 雄辩的拉威尔如何加入拉威尔的3表?
如何使用laravel 5中的Elount从3表中获取一些数据?我有3张桌子,团队,董事会,用户 团队模式:Php 雄辩的拉威尔如何加入拉威尔的3表?,php,laravel,laravel-5,database-design,eloquent,Php,Laravel,Laravel 5,Database Design,Eloquent,如何使用laravel 5中的Elount从3表中获取一些数据?我有3张桌子,团队,董事会,用户 团队模式: public function member() { return $this->belongsToMany(User::class) ->withPivot('status','user_role') ->withTimestamps(); } public function boards()
public function member()
{
return $this->belongsToMany(User::class)
->withPivot('status','user_role')
->withTimestamps();
}
public function boards()
{
return $this->belongsToMany(Boards::class)->withTimestamps();;
}
板模型
public function member()
{
return $this->belongsToMany(User::class)
->withPivot('status','user_role')
->withTimestamps();
}
public function team()
{
return $this->belongsToMany(Team::class)
->withTimestamps();
}
表结构:
团队
团队用户透视表
id
user_id
team_id
董事会
id
board_name
用户数据透视表
id
boards_id
user_id
这些板属于团队,我想获取属于团队ex:team a的板的数据,该团队ex:team a分配给用户ex:user1,但同时也是团队a的成员。
我怎样才能做到这一点呢?根据您最近的评论: 您不需要直接将用户和线路板联系起来。这可以从用户m--m团队的关系中访问。 一个董事会属于一个团队,一个团队可以有多个董事会。这是一种关系:团队m---1董事会 因此,表的结构应如下所示:
users
=====
- id
- ...
teams
=====
- id
- team_name
team_user
=========
- id
- team_id
- user_id
- status
- user_role
boards
======
- id
- team_id
- board_name
然后你的关系:
User.php
Team.php
Board.php
因此,现在您可以访问与用户特定团队相关的板,执行以下操作:
$user_boards = User
::find(1) // getting a User
->teams() // accessing the Teams relationship
->where('team_name', '=', 'My Team Name') // Constraining
->first() // accessing the Team record
->boards // getting the boards.
除此之外,您还可以在用户模型中添加快捷方式以访问电路板:
User.php
然后在控制器中或任何您想要的地方:
$user_boards = User::find(1)->boardsOfTeam('My Team Name');
当然,这是完全可选的。你说董事会属于一个团队。因此,与Board_User表相关的每个用户都属于该团队,对吗?@HCK是的,没错,但并非所有团队成员都被分配到该董事会。所以我想要只分配给同时也是该团队成员的用户的板还有,一个板属于一个团队还是可以属于多个团队?@HCK 1 Board只属于一个团队,但一个团队可以有多个板
public function members()
{
return $this
->belongToMany(User::class)
->withPivot('status','user_role');
}
public function boards()
{
return $this->hasMany(Board::class);
}
public function team()
{
return $this->belongsTo(Team::class);
}
$user_boards = User
::find(1) // getting a User
->teams() // accessing the Teams relationship
->where('team_name', '=', 'My Team Name') // Constraining
->first() // accessing the Team record
->boards // getting the boards.
...
public function boardsOfTeam($teamName)
{
return $this
->teams()
->where('team_name', '=', $teamName)
->first()
->boards;
}
$user_boards = User::find(1)->boardsOfTeam('My Team Name');