具有多对多口才关系的单个属性的数组

时间:2019-02-12 14:21:53

标签: laravel eloquent

我创建了一个模型NearMiss,该模型与Type模型具有多对多关系。当有针对特定NearMiss的GET请求时,我希望将数组附加到JSON输出,该输出具有{{1}的所有name实例的Type属性}}实例。

我可以将Types数组附加到输出,但是我想摆脱所有其他信息(例如数据透视信息)。

GET请求NearMiss执行以下方法:

/nearmisses/{nearmiss}

public function show($id) { try { $nearmiss = NearMiss::findOrFail($id)->first(); $nearmiss->types->makeHidden(['id', 'created_at', 'updated_at']); return response()->json($nearmiss); } catch(ModelNotFoundException $e) { abort(400, 'Model not found'); } } 模型具有以下类型关系:

NearMiss

当前输出:

public function types() 
    {
        return $this->belongsToMany('App\Type', 'near_miss_type', 'near_miss_id', 'type_id');
    }

我知道我可以删除其他属性(例如id,created_at,updated_at),但是仍然留下{ "id": 1, "location_long": "0.0000000", "location_lat": "0.0000000", "employee_id": 1, "created_at": "2019-02-11 16:38:24", "updated_at": "2019-02-11 16:38:24", "types": [ { "id": 1, "name": "Brandgevaar" "created_at": "2019-02-11 16:33:25", "updated_at": "2019-02-11 16:33:25", }, { "id": 2, "name": "Slipgevaar", "created_at": "2019-02-11 16:34:12", "updated_at": "2019-02-11 16:34:12", } ] } 实例数组(只有一个name属性)。当我尝试Type时,收到错误消息,flatten()无法用于BelongsToMany关系。

所需的输出:

flatten()

有人可以帮我获得想要的输出吗?

1 个答案:

答案 0 :(得分:0)

您可以手动加载类型,并使用pluck()函数仅获取每种类型的名称。

$nearmiss->types = $nearmiss->types()->pluck('name');

但是我不确定这是否会干扰Eloquent的魔术特性。