php - 拉维尔 : Many to many insertion

标签 php laravel loops eloquent laravel-5.4

我有两个模型,UserTeam 它们之间的关系是ManyToMany:

用户中:

public function teamMembers(){
    return $this->belongsToMany('App\Team')->withPivot('id');;
}

Team 中:

public function teamMembers(){
    return $this->belongsToMany('App\User')->withPivot('id');;
}

现在我想将用户添加到特定团队。所以数据透视表名称是 team_user

现在我要插入数据透视表的数据是:

array:4 [▼
  "_token" => "mlwoAgCQYals1N1s2lNa4U5OTgtMNHh9LUhNGrWh"
  "team_id" => "1"
  "members_id" => array:3 [▼
    0 => "2"
    1 => "3"
    2 => "4"
  ]
  "status" => "1"
]

我在我的 Controller 中做了什么:

$team_id = $request->get("team_id");
$team = \App\Team::findOrFail($team_id);
foreach ($request->get('members_id') as $key => $value) {
    $team->teamMembers()->attach($team);
    $team->save();
}

但它只插入一条记录,我的意思是team_id 和第一个member_id。 我希望它从 members_id 数组中为每个成员创建一条记录。我该怎么做?

最佳答案

您应该将一组用户 ID 传递给 attach()方法。

For convenience, attach and detach also accept arrays of IDs as input

将您的代码更改为:

$team = \App\Team::findOrFail($request->team_id);
$team->teamMembers()->attach($request->members_id);

关于php - 拉维尔 : Many to many insertion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949911/

相关文章:

php - 比特币当前的 PHP 值(value)?

php - 如何使用php和mysql从一个表中搜索另一个表中是否存在记录

php - 使用 CASE WHEN THEN 更新 2 条 mysql 行

php - 最小年龄验证 laravel

javascript - 我的脚本中的循环迭代不正确

c# - 如何打破嵌套的foreach循环然后转到c#上的父foreach循环

php - Laravel 数据库查询返回错误值

php - 尝试复制时在路径中找不到文件

php - Laravel 5.4 中使用多表连接处理数百万行的高效且事务安全的方法

java - Java中的递归 "Word Warp"程序