首页 > 解决方案 > laravel 多对多关系枢轴数据保存为空

问题描述

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

项目.php

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

用户.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 (?, ?, ?, ?)

没有提到角色列为什么会这样,我做错了什么?

标签: phplaraveleloquent

解决方案


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

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

推荐阅读