Есть несколько разных способов сделать это с помощью Laravel,
Объединения могут быть опцией для объединения двух таблиц в запросе DB::table()
, а затем для поиска пользователей по требуемым параметрам и возвратаthe role_id.
Чтобы ускорить пользователей
$user_ids = DB::table('users')->select('id')->someChainOfScopes()->get();
Цепные области, которые вы должны будете изменить на стандартные, где функции и т. д.
Затем используйте этот массив для запроса role_usertable direct
$role_ids = DB::table('role_user')
->select('role_id')
->whereIn('user_id', $user_ids)
->distinct()
->get();
Проблема, связанная с коллекциями и извлечением из коллекций, заключается в том, что она должна выполнять итерацию по всему массиву объектов, просто чтобы вытащить поле.Если это большая коллекция, то она очень дорогая.
Я не проверял, но, надеюсь, она поможет вам двигаться в правильном направлении.