web-dev-qa-db-ja.com

Laravel belongsToMany excludeピボットテーブル

UserBadgeの2つのモデルがあります。ユーザーは複数のバッジを持つことができ、バッジは複数のユーザーに属することができます。 (ピボットテーブルを使用)

現在、必要なデータを取得していますが、さらに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');
    }
}
20
Patrick Reck

モデルの$hiddenプロパティの配列にpivotを追加します。

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

}
42
c-griffin

または、引き続きオンデマンドでピボットを非表示にするこの方法で...

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

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