#laravel
#laravel
Вопрос:
из этой коллекции я хочу подсчитать и отобразить количество пользователей, у которых есть роль ученика
array:7 [▼
0 => array:21 [▶]
1 => array:21 [▶]
2 => array:21 [▶]
3 => array:21 [▶]
4 => array:21 [▼
"id" => 5
"name" => "Learner"
"last_name" => "Learner"
"email" => "learner@app.com"
"email_verified_at" => null
"phone" => "3427932821"
"type" => null
"avatar" => "default.jpg"
"gender" => null
"identity" => null
"street" => null
"suburb" => null
"city" => null
"province" => null
"code" => null
"school" => null
"grade" => null
"subjects" => null
"created_at" => "2020-10-21T11:48:11.000000Z"
"updated_at" => "2020-10-21T11:48:11.000000Z"
"roles" => array:1 [▼
0 => array:7 [▼
"id" => 5
"name" => "learner"
"display_name" => "Learner"
"description" => "Learner"
"created_at" => "2020-10-21T11:48:11.000000Z"
"updated_at" => "2020-10-21T11:48:11.000000Z"
"pivot" => array:3 [▶]
]
]
]
5 => array:21 [▶]
6 => array:21 [▶]
]
вот мой Usercontroller
public function index()
{
$users = User::with('roles')->orderBy('created_at', 'desc')->get();
return view('admin.users.index', compact('users'));
}
Я хочу отобразить результат подсчета в blade.php досье… Количество пользователей с ролью, равной ученику
Комментарии:
1. Вы хотите создать отдельный массив для того же или просто хотите подсчитать?
2. Точно так же, как это
$users = User::whereHas('roles', function ($qw){$qw->whare('name', 'learner')})orderBy('created_at', 'desc')->count();
3. Не забудьте точку с запятой
4. @EncangCutbray Да, это работает, спасибо
5. Рад слышать, счастливого кодирования
Ответ №1:
Рассмотрим следующий фрагмент;
count(array_filter($user, function ($elem) {
$roles = $elem['roles'];
return count(array_filter($roles, function ($role) {
return 'learner' === $role['name'];
})) > 0;
}));