[英]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 方式)來做到這一點?
更新:-
項目表架構:-
id、名稱、type_id
需要表架構:-
id、project_id、標題
類型表架構:-
ID,名稱,描述
需要對項目進行持久化獲取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'],
]);
}
}
不要忘記為 Need 模型的$fillable
添加title
此外,項目模型必須將關系定義為一對多:
// Project.php
public function needs()
{
return $this->hasMany(Need::class);
}
要么你可以按照這個方法。
$needs = [
[
'title' => 'A new title.',
],
[
'title' => 'Another new title.',
],
];
$project->needs()->createMany($needs);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.