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 请求一次创建不同模型的多个嵌套记录