2016-07-17 4 views
1

Предположим, у меня есть таблица user и roles со многими для многих отношений с использованием сводной таблицы role_user таблица.Laravel 5 Eloquent count many to many Отношения

Я использую belongstomany отношения на моей модели

Как сделать красноречивый запрос, чтобы подсчитать, сколько пользователь имеет роль admin и staff

+0

Что у вас до сих пор? – TheFallen

ответ

1

решена.

добавить это Role.php модели

public function userCount() { 
    return $this->belongsToMany(Role::class) 
     ->selectRaw('count(role_user.user_id) as total_user') 
     ->groupBy('role_id'); 
} 

и это

public function getUserCountAttribute() 
    { 
     if (! array_key_exists('userCount', $this->relations)) $this->load('customerCount'); 

     $related = $this->getRelation('userCount')->first(); 

     return ($related) ? $related->total_user : 0; 
    } 

после этого, чтобы сделать красноречивый запрос ...

$roleUsers = Role::with('userCount')->orderBy('id', 'asc')->get(); 
Смежные вопросы