我想用laravel制作一个api,我希望得到以下格式的所有字段
projects: [
{
id,
name,
logo,
thumbnail,
phases: [{
id,
name,
date,
views: [{
id,
name,
thumbnail,
images: [{
id,
path: [ 5 urls for the various images ]
date
}]
}]
}]
}
]
我的数据库模型如下 - 项目 - >很多阶段 - 阶段 - >有很多看法 - 观点 - > hasmany图像
模型如下
class Project extends \Eloquent {
// Add your validation rules here
public static $rules = [
'title' => 'required',
];
// Don't forget to fill this array
protected $fillable = [ 'title', 'desc' ];
public function phases() {
return $this->hasMany('Phase');
}
}
class Phase extends \Eloquent {
protected $fillable = [ 'title', 'from', 'to', 'project_id' ];
public static $rules = [
'title' => 'required',
'from' => 'required',
'to' => 'required'
];
public function views() {
return $this->hasMany( 'View' );
}
public function project(){
return $this->belongsTo('Project');
}
}
class View extends \Eloquent {
// Add your validation rules here
public static $rules = [
'title' => 'required',
'image_path' => 'required'
];
// Don't forget to fill this array
protected $fillable = [ 'title', 'image_path', 'caption', 'view_date', 'phase_id' ];
public function phase(){
return $this->belongsTo('Phase');
}
}
如何在索引响应中获取所有json,我使用以下内容但没有获得相同的格式
Project::all();
答案 0 :(得分:0)
您必须eager load数据集:
Project::with('phases.views','phases.images')->get();
您似乎没有将模型中的图像作为相关模型,但您确实有项目。但你的json示例显示图像而不是项目,这是对的吗?
答案 1 :(得分:0)
在检索集合时,默认情况下不会加载关系(这称为延迟加载)。但您可以使用with()
方法加载它们(这称为急切加载):
Project:all()->with('phases')->get();
您还可以使用点表示法链接嵌套关系:
Project:all()->with('phases.views')->get();