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 如何在多对多关系中分配给用户?的主要内容,如果未能解决你的问题,请参考以下文章

在多对多关系中命名表 laravel

在多对多关系 laravel4 的情况下更新数据透视表

laravel 使用具有多对多关系数据透视表的策略

如何在多对多关系中更新日期

Laravel - SQL查询在多对多关系中等于id的值为null

在多对多 SQL 表中查找数据关系或图形