Как подсчитать количество пользователей с role = learner?

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