多くのユーザーに属するモデルロールがあります。
Class Role {
public $fillable = ["name"];
public function users()
{
return $this->belongsToMany('App/Models/User')->select(['user_id']);
}
}
Roleでクエリを使用してユーザーを取得する場合。私はそれがuser_ids配列のみを返すだろう
Role::with("users")->get();
次の出力を返すはずです
[
{
"name": "Role1",
"users" : [1,2,3]
},
{
"name": "Role2",
"users" : [1,2,3]
}
]
現在、次の出力が得られます
[
{
"name": "Role1",
"users" : [
{
user_id : 1
},
{
user_id : 2
},
{
user_id : 3
}
},
{
"name": "Role2",
"users" : [
{
user_id : 1
},
{
user_id : 2
},
{
user_id : 3
}
]
}
]
個人的には、users()
関係は変更しませんが、ユーザーIDのアクセサーを追加する可能性があります
_class Role {
protected $fillable = ["name"];
// adding the appends value will call the accessor in the JSON response
protected $appends = ['user_ids'];
public function users()
{
return $this->belongsToMany('App/Models/User');
}
public function getUserIdsAttribute()
{
return $this->users->pluck('user_id');
}
}
_
その後、まだ関係がありますが、ロール応答の配列としてユーザーIDにアクセスできます。 @Creatorが述べたように、それがうまくいかない場合は、おそらく->pluck('id')
ではなく、select()
をリレーションシップに追加することができます。