首页 > 解决方案 > 在 Laravel 中哪里可以同时保存不同的模型?

问题描述

我有一个小问题要问你。

我正在使用 Laravel,但我不确定哪个是同时保存不同模型的最佳方式(和位置)。

例如:

当用户创建“RecordSheet”时,我需要自动创建与 RecordSheet 模型相关的其他模型。显然我会在他自己的控制器中创建 RecordSheet 模型:

class RecordSheetController extends Controller
{
   public function store(){
    RecordSheet::create([
    .......
    'user_id' => Auth::user()->id
    ]);
   }
}

我应该把其他模型的创建放在哪里?在同一个 RecordSheetController 中?

class RecordSheetController extends Controller
{
  public function store(){
    DB:beginTranaction()
    
    try{
    $record = RecordSheet::create([
    .......
    'user_id' => Auth::user()->id
    ]);

    ModelB::create([
    .......
    'recordSheet' => $record->id,
    'user_id' => Auth::user()->id
    ]);

    }catch(Exception $e)
    {
      DB:rollback();
    }
    DB:committ();
  }
}

我不确定那是因为我认为 RecordSheetController 应该只负责“RecordSheet”模型而不是其他模型。

任何建议将不胜感激!谢谢大家!

标签: laraveleloquentmodel

解决方案


你可以在这个场景中使用Laravel 观察者,创建一个RecordSheetObserver并将你的ModelB代码放在created方法中


推荐阅读