2017-07-09 68 views
0

例如:我有項目模型和需要模型。
因此,當用戶創建一個新項目時,他也必須創建它(需求),每個項目可以有多個項目。
我這樣做的projectController的「店」的方法: -
在Laravel如何插入相關模型

$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尚未創建,因爲它不保存到數據庫中,所以創建兩個模型實例(Project & Needs)的最佳方式是什麼?並將它們與它們的關係保存起來?
我應該保存該項目,然後獲取(最後保存ID)?或者有更好的(Laravel方式)來做到這一點?

更新: -
項目表架構: -
ID,姓名,TYPE_ID

需求表架構: -
ID,PROJECT_ID,標題

類型表架構: -
ID,名稱,描述

+0

份額烏爾數據庫 –

+0

請分享你的模型定義 –

回答

1

您需要堅持項目以獲得一個ID d能夠增加相關需求。

$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$fillable就需要模型

而且項目模型必須定義關係,一個一對多:

// Project.php 

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

這是我需要確認,謝謝 –