laravel 如何在多对多关系中分配给用户?
Posted
技术标签:
【中文标题】laravel 如何在多对多关系中分配给用户?【英文标题】:How Assign To User In Many To Many Relationship at laravel? 【发布时间】:2019-11-30 02:30:09 【问题描述】:我有 3 个表 用户表:
| id | name | email | password |
|----|------|----------------|----------|
| 1 | jack | jack@gmail.com | 123456 |
站点表:
| id | name | url |
|----|--------|------------|
| 1 | google | google.com |
我想在 Laravel 上完成这项工作: 当用户添加站点时,自动将该站点添加到 site_user 表上的该用户 例如,当我使用 url google.com 添加站点 google 时,在 site_user 表上添加一行包含以下内容:site_user 表:
| id | user_id | site_id |
|----|---------|---------|
| 1 | 1 | 1 |
也就是说 site_id 1 属于 user_id 1 。我该怎么做?
我有两个模型站点和用户:现场模型:
public function users()
return $this->belongsToMany(User::class,'site_user','site_id','user_id');
关于用户模型:
public function sites()
return $this->belongsToMany(Site::class,'site_user','user_id','site_id');
而在控制器中,我不知道我该如何完成这项工作!请帮帮我@
【问题讨论】:
到目前为止,您在控制器中的代码是什么? 我想要这个@这是我在控制器中的代码:public function store(Request $request) Site::create($request-all());
以上代码仅在第二个表 Sites Table 上创建数据。我想在 site_user 表上的这段代码之后自动创建数据
【参考方案1】:
https://laravel.com/docs/5.8/eloquent-relationships#many-to-many 在您的控制器中:
$user = Auth::user();
$sites = $user->sites()->get(); // This will get the sites belongs to user
$site = Site::first();
$users = $site->users()->get(); // This will get the users belongs to site
$user = Auth::user();
$site = Site::create($request->all());
$user->sites()->attach($site->id); // This will build the relationship with site and user
$user = Auth::user();
$site_ids = [1,2,3];
$user->sites()->sync($site_ids); // This will create the not exist relationship in $site_ids, and delete the exist relationship not in $site_ids;
【讨论】:
谢谢,但我不知道如何使用您的代码!你能解释一下我如何在 sitesController.php 中完成这项工作吗? 我认为你需要先创建你的站点,然后获取你创建的site_id,然后像第三部分一样通过attach找到用户建立关系。以上是关于laravel 如何在多对多关系中分配给用户?的主要内容,如果未能解决你的问题,请参考以下文章