Laravel 雄辩:用相关的新模型存储新模型

Posted

技术标签:

【中文标题】Laravel 雄辩:用相关的新模型存储新模型【英文标题】:Laravel eloquent: store new model with related new models 【发布时间】:2017-09-23 15:27:58 【问题描述】:

我正在尝试存储一个新模型,其中包含许多相关的新模型。

我有我的服务模型

class Service extends Model
    public function serviceoperations() 
        return $this->hasMany("App\Models\ServiceOperation");
    

和我的ServiceOperation模型

class ServiceOperation extends Model
    public function service() 
        return $this->belongsTo("App\Models\Service");
    

在我的 store 函数中,我正在使用 transaction 创建一个具有许多服务操作模型的新服务模型:

use App\Models\Service;
use App\Models\ServiceOperation;
use Illuminate\Support\Facades\DB;

    public function store(Request $request) 
        $service = new Service();
        $ops = [];
        foreach ($operations as $operation) 
            $op = new ServiceOperation();
            $ops[] = $op;
        
        DB::transaction(function()use($service, $ops) 
            $service->save();
            $service->serviceoperations()->saveMany($ops);
        );
    

我的问题是:是否有另一种方法可以将我的新相关 serviceoperation 模型添加到我的新 service 模型中,并将它们保存在单个命令中的数据库?

【问题讨论】:

【参考方案1】:

你必须使用associate方法。

$service->serviceoperations()->associate($serviceoperations)

希望对你有帮助:)

【讨论】:

我不确定它是否有效。看着this question,我应该先保存我的服务模型,然后才能打电话给同事。无论如何,我只是尝试过,它不起作用。我也尝试了反向$operation->service()->associate($service),但它并没有保存创建的新操作。

以上是关于Laravel 雄辩:用相关的新模型存储新模型的主要内容,如果未能解决你的问题,请参考以下文章

雄辩的模型属性作为骆驼案例 [Laravel 5.2] [Dingo API]

Laravel 雄辩地搜索相关模型的字段

php Laravel雄辩获得最新的相关模型

列表模型如何按 DOWN-VOTES 的数量排序到相关模型 - laravel,雄辩

雄辩的条件更新

两个多对多相关表之间的Laravel雄辩关系