Я действительно близок к этому, но это не совсем ловит все сценарии.Там есть коллекция писем.Каждый из них может иметь несколько обзоров (наверняка хотя бы один).Рецензия будет иметь свойство approver_status
(рецензент, прикрепленный к этому обзору, может одобрить или отклонить его) и свойство approved
(независимо от того, действительно ли оно одобрено для отправки или нет).Некоторые рецензенты не являются «утверждающими» и могут давать только отзывы.Мой красноречивый запрос выглядит следующим образом:
$data = Email::with('emailReviews')
->where(['created_by' => $personID, 'sent_at' => null])
->get()
->map(function ($email) {
$reviewsStatus = $email->emailReviews->pluck('approved')->unique();
if ($reviewsStatus->count() == 1 && $reviewsStatus->first()) {
$email->approvalStatus = true;
} else {
$email->approvalStatus = false;
}
return $email;
});
Он работает, если все рецензенты являются «утверждающими», но если есть какие-то отзывы с утверждающими и не утверждающими, он отправляет обратно false, даже если все «утверждающие»"одобрили это.В функции карты мне нужно игнорировать свойство approved
, если у рецензента нет approver_status
.Мне было интересно, могу ли я добавить что-то в строку:
$reviewsStatus = $email->emailReviews->pluck('approved')->unique();
, которая в основном действует как предложение where where approver_status === false
.Я знаю, что не могу этого сделать, но это идея.Я также попытался добавить туда оператор if:
$data = Email::with('emailReviews')
->where(['created_by' => $personID, 'sent_at' => null])
->get()
->map(function ($email) {
$approverStatus = $email->emailReviews->pluck('approver_status')->unique();
if ($approverStatus->count() == 1 && $approverStatus->first()) {
$reviewsStatus = $email->emailReviews->pluck('approved')->unique();
if ($reviewsStatus->count() == 1 && $reviewsStatus->first()) {
$email->approvalStatus = true;
} else {
$email->approvalStatus = false;
}
}
return $email;
});
Это просто не возвращает $email->approvalStatus
для писем с более сложными сценариями проверки.Спасибо!