在Laravel如何插入相关模型

In Laravel How to insert related models

例如:我有Project模型和Need模型。
因此,当用户创建一个新项目时,他也必须创建它(需要),每个项目可能不止一个。
我在 projectController 的 "store" 方法中这样做了:-

$project = new Project;
$project->name = $request->project_name;
$project->type = $request->project_type;
// ... etc

if ( $request->exists("project_needs") ) {
    foreach ( $request->project_needs as $project_need ) {
        $need = new Need;
        $need->title = $project_need['title'];
        $need->project_id = $project->id // Here is the thing
    }
}

但它给了我一个错误,因为(我认为)project_id 还没有创建,因为它没有保存到数据库中,那么创建两个模型实例的最佳方法是什么(项目 &需要)并保存他们与他们的关系?
我应该保存项目然后获取 (last-save-id) 吗?或者有更好的(Laravel 方法)来做到这一点?

更新:-
项目 table 架构:-
id, 名字, type_id

需要 table 架构:-
id, project_id, 标题

类型 table 架构:-
编号、名称、描述

您需要持久化项目获取id,才能添加相关需求

$project = new Project;
$project->name = $request->project_name;
$project->type = $request->project_type;
// ... etc

$project->save(); // Saving to database;

if ($request->exists("project_needs")) {
    foreach ($request->project_needs as $project_need) {
        $project->needs()->create([
            'title' => $project_need['title'],
        ]);
    }
}

不要忘记将 title 添加到 Need 模型上的 $fillable

此外,项目模型必须将关系定义为一对多:

// Project.php

public function needs()
{
    return $this->hasMany(Need::class);
}

也可以按照这个方法。

$needs = [
  [
    'title' => 'A new title.',
  ],
  [
    'title' => 'Another new title.',
  ],
];

$project->needs()->createMany($needs);