使用一个表单在两个表中创建一行。如何添加连接它们的ID?

时间:2018-02-28 01:01:06

标签: laravel laravel-5

我正在使用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?可能吗?如果不是,我会找到一种解决方法或以不同的方式接近它。

感谢。

1 个答案:

答案 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)关系来获取另一个表的记录。