首页 > 解决方案 > 如何在 Laravel 的 hasManyThrough 关系中删除 laravel_through_key

问题描述

我有一个 hasManythrough 关系。如下:

public function contacts(){
    return $this->hasManyThrough(ContactContent::class, Content::class,"id",'as_parent_content_id','as_parent_content_id','id');
}
public function getSupportElementsAttribute(){
    return [
        "contacts" => $this->contacts,
        "documents" => $this->documents,
        "assignments" => $this->assignments
    ];
}

这个返回是这样的:

"contacts": [
                {
                    "id": 66,
                    "as_parent_content_id": 5074,
                    "created_at": "2020-09-30 16:21:11",
                    "updated_at": "2020-09-30 16:21:11",
                    "create_user_id": 1,
                    "laravel_through_key": 5074
                }
            ],

如何删除这个 laravel_through_key ?

标签: laraveleloquent

解决方案


您可能想从收藏中隐藏此列吗?然后 :

$user = User::with('posts')->get();
$user->makeHidden('laravel_through_key');

现在laravel_through_key将从您的收藏中隐藏。

替代解决方案:添加laravel_through_key模型的$hidden属性,如下:

protected $hidden = [
    'laravel_through_key'
];

推荐阅读