php - 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 (?, ?, ?, ?)
没有提到角色列为什么会这样,我做错了什么?
解决方案
您的attach
通话出错(括号在角色后关闭,角色成为 user_id 的默认值$request->input($value, $default)
)
$project->users()->attach($request->input('user_id'), ['role' => $request->input('role')]);
推荐阅读
- python - 创建具有特定依赖项的 requirements.txt
- sql - 如何区分没有 ID 的日志在 SQL 上单独聚合?
- azure - Azure DevOps 数据工厂数据集和管道 CI/CD 参数
- postgresql - 取决于特殊变量 OLD、NEW、TG_OP 等的 PostgreSQL (PL/pgSQL) 触发函数是否可以是纯的,因此是 IMMUTABLE?
- json - 将 JSON 字段值映射到数据类值
- python - 消息中间的 Python 输入
- javascript - 这是一个可能的 xss 漏洞吗?
- javascript - 如何通过在Javascript中获取来初始化变量
- php - 可以使用 web flutter 创建管理面板并在移动端 Flutter 应用程序中使用它
- r - 按列名和行名合并两个矩阵