После ответов на этот вопрос: Laravel - красноречивый «Имеет», «С», «Где» - Что они означают?
Если я правильно понял, как структурирована ваша модель данных:
- У пользователя много ролей
- Роль имеет статус
- Хотите отфильтровать по статусу = 1
$users = User::whereHas('roles', function($q){
$q->where('status', '1');
})
->where('email', $email)
->get();
РЕДАКТИРОВАТЬ: я не доволен ответом выше, потому что в этом случае, насколько я понял, возвращенные пользователи не имеют список уже загруженных ролей, поэтому я проверил документацию (https://laravel.com/docs/5.8/eloquent-relationships) и дал что я нашел, следующий код должен делать то, что вы просите:
$users = User::with(['roles' => function ($query) {
$query->where('status', '1');
}])
->where('email', $email)
->get();
Я никогда не использовал eloquent, ни laravel, и я не являюсь разработчиком php, поэтому я не смог попробовать этот фрагмент, пожалуйста, если он неверный, дайте мне знать.