2017-07-09 11 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がまだ作成されていないことをので、それはそう、データベースに保存されていないので、それは、私にエラーを与えます両方のモデルインスタンス(プロジェクト&必要)を作成し、それらの関係を保存する最良の方法は何ですか?
プロジェクトを保存してから(last-save-id)を取得する必要がありますか?それを行うにはより良い方法がありますか?

アップデート: -
プロジェクトテーブルスキーマ: - :
ID、PROJECT_ID、タイトル

種類テーブルスキーマ: - -

ID、名前は、

ニーズテーブルスキーマをTYPE_ID ID、名前、説明

+0

株式ウルデータベース –

+0

してくださいあなたのモデル定義を共有してください –

答えて

1

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'], 
     ]); 
    } 
} 

また、プロジェクトのモデルは1対多のような関係を定義する必要がありますニードモデル

$fillabletitleを追加することを忘れないでください:

// Project.php 

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

これは私が確認する必要があったものです、ありがとう –

関連する問題