我一直在努力争取自己,似乎无法让我的JSON只显示房间的标题和描述。我尝试使用return $this->hasMany('Room')->select(array('id', 'title', 'description'));
,但它根本没有返回房间。
有人可以帮忙吗?我确信这一点必须非常简单,因为我理解Laravel Eloquent对于这类任务来说过于简单化。
JSON
[
{
id: 1,
building_title: "Drum Castle"
room: [
{
id: 1,
building_id: 7,
title: "Snooker Room",
description: "Full Description",
live: 1
}
]
}
]
建筑模型
public function room()
{
return $this->hasMany('Room');
}
房间模型
public function building()
{
return $this->belongsTo('Building', 'building_id');
}
控制器
$buildings = Building::with('room')->get();
答案 0 :(得分:1)
您尝试限制关系字段的尝试失败,因为您没有选择building_id
字段。如果你没有得到这个领域,Laravel不知道哪个房间属于哪些建筑物(想想急切的负载关系)。
执行所需操作的一种方法是在建筑物或房间中覆盖toArray()
方法(由toJson()
调用)。
另一个选项是在Room模型上设置隐藏/可见属性。这些属性将控制转换为数组时隐藏/可见的字段。
class Room extends Eloquent {
protected $hidden = array('building_id', 'live');
// or
protected $visible = array('id', 'title', 'description');
// rest of class
}