Laravel属于ToMany排除数据透视表

时间:2014-10-20 20:20:44

标签: php laravel orm eloquent

我有两个模型,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');
    }
}

3 个答案:

答案 0 :(得分:38)

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');
    }

}

答案 1 :(得分:5)

或者您仍然可以按需隐藏枢纽 ...

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

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

答案 2 :(得分:0)

您可以使用 json 列来完成。阅读此文档希望对您有所帮助。 Avoid Pivot Table and Use Json Column in Laravel