我正在使用laravel 5.6,我试图在两个不同的表中插入一行并将它们链接在一起public function store()
这就是我所拥有的:
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required',
'project' => 'required',
'project_type' => 'required',
'budget' => 'required'
]);
$client = new Client;
$project = new Project;
$client->name = $request->input('name');
$client->email = $request->input('email');
$client->save();
$project->project = $request->input('project');
$project->project_type = $request->input('project_type');
$project->budget = $request->input('budget');
$project->save();
return redirect('/admin/clients');
}
我需要做类似的事情:
$client->project_id = $project->id;
$project->client_id = $client->id;
但这显然不起作用。如果还没有创建行来访问它们,我将如何获取这些行的ID?可能吗?如果不是,我会找到一种解决方法或以不同的方式接近它。
感谢。
答案 0 :(得分:2)
如果您创建的表格允许 project_id 且 client_id null ,则在保存客户端和项目后添加以下代码段:
$client->project_id = $project->id;
$client->save();
$project->client_id = $client->id;
$project->save();
但我建议您在客户端或项目中为另一个表创建一个外键,但不能同时使用这两个。
然后你可以定义一对一的雄辩(https://laravel.com/docs/5.5/eloquent-relationships#one-to-one)关系来获取另一个表的记录。