簡體   English   中英

在 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 方式)來做到這一點?

更新:-
項目表架構:-
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM