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嵌套输入的主要内容,如果未能解决你的问题,请参考以下文章