Laravel属于ToMany排除数据透视表

Pat*_*eck 18 php orm laravel eloquent

我有两个型号,UserBadge.用户可以拥有多个徽章,徽章可以属于多个用户.(使用数据透视表)

目前我正在获取我需要的数据,但另外我正在获取该pivot表.我如何排除这个?

在此输入图像描述

这是User模型:

class User extends Eloquent {

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

}
Run Code Online (Sandbox Code Playgroud)

Badge型号:

class Badge extends Eloquent {

    public function users() {
        return $this->belongsToMany('User', 'users_badges');
    }
}
Run Code Online (Sandbox Code Playgroud)

c-g*_*fin 44

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

class Badge extends Eloquent {

    protected $hidden = ['pivot'];

    public function users() {
        return $this->belongsToMany('User', 'users_badges');
    }
}
Run Code Online (Sandbox Code Playgroud)

和你的User模特一样

class User extends Eloquent {

    protected $hidden = ['pivot'];

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

}
Run Code Online (Sandbox Code Playgroud)

  • @challet 是的,请查看 [此处的文档](https://laravel.com/docs/5.6/eloquent-serialization#hiding-attributes-from-json)。向下滚动一点,您将找到一个如何动态隐藏属性的示例。 (2认同)

bma*_*ovu 9

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

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

$badge = Badge::find(1);
$badge->users->makeHidden('pivot');
Run Code Online (Sandbox Code Playgroud)