Laravel:一次保存多个模型/ json嵌套输入

Posted

技术标签:

【中文标题】Laravel:一次保存多个模型/ json嵌套输入【英文标题】:Laravel: saving multiple models at once / json nested input 【发布时间】:2015-02-23 11:32:18 【问题描述】:

我正在使用 Postman 向我的 API 端点提交一个 POST 请求。

在我的嵌套 JSON 中,艺术家有一张或多张专辑,每张专辑都有一首或多首歌曲。

我有两个问题: 1) 如何在 Laravel 中执行嵌套数组验证?我正在寻找一种最佳/标准的 Laravel 方法。

2) 如何将多个模型保存在一起? 注意:我确实在我的 Eloquent 模型中创建了关系,例如

class Artist extends Eloquent 
    public function albums()
    
        return $this->hasMany('Album');
    


class Album extends Eloquent 
    public function songs()
    
        return $this->hasMany('Song');
    
 

class Song extends Eloquent 
    public function album()
    
        return $this->belongsTo('Album');
    
 

class Album extends Eloquent 
    public function artist()
    
        return $this->belongsTo('Artist');
    

【问题讨论】:

【参考方案1】:

1) 使用验证器的each 方法:

$validator = Validator::make(Input::all(), [...rules...]);

$validator->each('albums', [...rules...]);

2) 创建艺术家后,循环访问您的albums 并在关系上调用create

$artist = Artist::create(Input::all());

foreach (Input::get('albums') as $album)

    $artist->albums()->create($album);

【讨论】:

以上是关于Laravel:一次保存多个模型/ json嵌套输入的主要内容,如果未能解决你的问题,请参考以下文章

- 更新 - Rails API 应用程序使用来自控制器的 POST 请求一次创建不同模型的多个嵌套记录

使用 laravel 一次调用多个 API 资源

如何在 laravel 6 中存储和检索嵌套的 JSON 数组

在保存之前验证多个嵌套属性关联模型是不是相等

如何在 laravel 8 中保存嵌套的下拉菜单

Laravel如何保存多个相关模型?