laravel多对多关系数据透视表保存为空

时间:2019-07-10 08:03:43

标签: php laravel eloquent

我的应用程序中具有多对多关系,该关系允许许多用户与许多项目关联,并且每个关联都可以扮演不同的角色。

Project.php

 public function users()
{
    return $this->belongsToMany('App\User')->withPivot('role')->withTimestamps();
}

User.php

public function projects()
{
    return $this->belongsToMany('App\Project')->withPivot('role')->withTimestamps();
}

我这样附加用户及其枢纽数据

$project = Project::find($request->input('project_id'));
\DB::enableQueryLog(); // Enable query log
$project->users()->attach($request->input('user_id', ['role' => $request->input('role')]));
dd(\DB::getQueryLog()); // Show results of log

但是输出的SQL

insert into `project_user` (`created_at`, `project_id`, `updated_at`, `user_id`) values (?, ?, ?, ?)

没有提到角色专栏,这是为什么,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的attach调用中出错(角色后括号关闭,角色成为user_id $request->input($value, $default)的默认值)

$project->users()->attach($request->input('user_id'), ['role' => $request->input('role')]);