【问题标题】:Hide specific columns from pivot key从数据透视键隐藏特定列
【发布时间】:2015-11-29 16:25:50
【问题描述】:

我有 2 个表,分别是 abcxyzManyToMany 关系建立在另一个表上,比如 abc_xyz(其数据将作为 pivot 键返回)。但是,pivot 检索时的键有abc_idxyz_id 作为回报。我可以使用方法withPivot('dummy') 访问abc_xyz 表中的其他列

但是,我想从响应中隐藏 abc_idxyz_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"
            }
       }
   ]
}

所以,我只需要来自pivot 键的dummy,并隐藏abc_idxyz_id。我怎么做?

【问题讨论】:

    标签: laravel eloquent pivot-table


    【解决方案1】:

    找到了一种粗略的方法来完成这项工作。在 laravel 问题中找到了这个答案,现在无法找到链接。但是,它要求我在模型中添加一个方法并取消设置我不想要的键。

    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 给出一个简单的方法。

    【讨论】:

    • 为什么会被否决?有更好的解决方案吗?我至少希望看到拒绝投票的原因
    • 从问题到遮阳篷,我应该添加什么型号?
    • @francisco 你应该添加它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多