从Laravel Eloquent获取特定列

时间:2015-02-10 22:49:50

标签: laravel laravel-4

我一直在努力争取自己,似乎无法让我的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();

1 个答案:

答案 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
}