在 laravel 的数据透视表中存储数据

Posted

技术标签:

【中文标题】在 laravel 的数据透视表中存储数据【英文标题】:store data in pivot table in laravel 【发布时间】:2020-09-01 06:53:40 【问题描述】:

我有两个表用户表和项目表,它们与多对多关系 project_user 表链接。我想在创建项目时存储项目 ID,并且用户在数据透视表项目用户中,但出现以下错误 array_key_exists():第一个参数应该是字符串或整数

我的项目控制器

 public function store(Request $request)

     request()->validate([
        'name' => 'required',
        'detail' => 'required',
        'location'=>'required',
        'total_cost'=>'required',
        'users' => 'required'

    ]);  
    $project = new Project;
    $project->user_id = auth()->user()->id;
    $project->user = $request->input('users');
    $users = $request->has('users') ? $request->get('users') : [];
    $user2= User::find($users); 

    $project->users()->attach($request->input([$project ,$project->user_id]));
return redirect()->route('projects.index')
                    ->with('success','Project created successfully.');

【问题讨论】:

【参考方案1】:

您在$request->input() 方法上传递Project 模型实例,该方法不是write。

要解决您的问题,请按照这种方式进行

$userIds = $request->get('users'); // Example value like: [9, 8, 29]
$project->users()->attach($userIds);

就是这样!

【讨论】:

以上是关于在 laravel 的数据透视表中存储数据的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 从数据透视表中获取额外的列值

在 Laravel 的数据透视表中添加 id 列有啥好处?

laravel4 更新数据透视表中的附加列

如何使用 laravel 删除数据透视表中的单行

Laravel 在带有分页的数据透视表中搜索

Laravel - 将其他列值保存到数据透视表