首页 > 解决方案 > 在 Eloquent 关系中隐藏外国 id 列

问题描述

让我们考虑一下爱因斯坦谜题和这两个模型:

class Pet extends Eloquent
{
    public function pet()
    {
        return hasOne(Man::class)
    }
}

class Man extends Eloquent
{
    public function pet()
    {
        return belongsTo(Pet::class)
    }
}

如果我想获得所有宠物:

Pet::all()->toArray();

例如,我会得到:

{
    id: 2,
    man: {
        nationality: "German",
        pet_id: 2
    }
    name: "Fish"
}

在这种情况下,拥有该pet_id列是无关紧要的,我想隐藏它。如何?

标签: phplaraveleloquent

解决方案


使用Eloquent API 资源获取模型的数组版本。从长远来看,这比依赖无法配置的模型的 toArray 方法更灵活。

如果您仍然想使用toArray,您可以简单地将不应包含的属性添加到$hidden每个相应模型中调用的受保护成员变量中(请参阅有关Eloquent 模型序列化的文档)。


推荐阅读