隐藏枢轴键中的特定列

问题描述 投票:0回答:1

我有 2 个表,即

abc
xyz
,其中
ManyToMany
关系建立在另一个表上,即
abc_xyz
(其数据将作为
pivot
键返回)。然而,检索时的
pivot
键会返回
abc_id
xyz_id
。我可以使用方法
abc_xyz
 访问 
withPivot('dummy')

表中的其他列

但是,我想在响应中隐藏

abc_id
xyz_id
。我怎么做? 我可以使用 $hidden 数组隐藏整个
pivot
键,但我只想隐藏特定列而不是整个键。

当前响应

{
   "abc_uuid": "some uuid",
   "xyz" : [
       {
           "xyz_uuid": "some uuid",
           "pivot": {
                "abc_id": 1,
                "xyz_id": 1,
                "dummy" : "dummy value"
            }
       },
       {
           "xyz_uuid": "some uuid",
           "pivot": {
                "abc_id": 1,
                "xyz_id": 2,
                "dummy" : "dummy value"
            }
       }
   ]
}

因此,我只需要

dummy
键中的
pivot
,并隐藏
abc_id
xyz_id
。我怎么做?

php laravel eloquent pivot-table
1个回答
1
投票

找到了一个粗略的方法来完成这件事。在 laravel issues 中找到了这个答案,现在无法找到链接。但是,它要求我在模型中添加一个方法并取消设置我不需要的键。

public function toArray()
{
    $attributes = $this->attributesToArray();
    $attributes = array_merge($attributes, $this->relationsToArray());
    foreach($attributes['xyz'] as $key => $value) {
        unset($value['pivot']['abc_id']);
        unset($value['pivot']['xyz_id']);
        $attributes['xyz'][$key] = $value;
    }
    return $attributes;
}

这会从我的响应中取消设置不需要的键。我希望 laravel 能给出一个简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.