Laravel 属于Tomany 排除数据透视表

2022-08-30 12:09:31

我有两个模型,和.一个用户可以有多个锁屏提醒,一个锁屏提醒可以属于多个用户。(使用数据透视表)UserBadge

目前,我正在获取所需的数据,但此外,我正在获取表。如何排除此项?pivot

enter image description here

模型如下:User

class User extends Eloquent {

    public function badges() {
        return $this->belongsToMany('Badge', 'users_badges');
    }

}

模型:Badge

class Badge extends Eloquent {

    public function users() {
        return $this->belongsToMany('User', 'users_badges');
    }
}

答案 1

添加到模型中属性的数组中。pivot$hidden

class Badge extends Eloquent {

    protected $hidden = ['pivot'];

    public function users() {
        return $this->belongsToMany('User', 'users_badges');
    }
}

您的模型也是如此User

class User extends Eloquent {

    protected $hidden = ['pivot'];

    public function badges() {
        return $this->belongsToMany('Badge', 'users_badges');
    }

}

答案 2

或者您仍然可以通过这种方式按需隐藏枢轴...

$user = User::find(1);
$user->badges->makeHidden('pivot');

$badge = Badge::find(1);
$badge->users->makeHidden('pivot');

推荐