ApplicantTbl
id | name |
--------------------
1 | John Doe |
2 | Maria Ozawa |
3 | Catriona Gray |
--------------------
EnrollmentRequestContentTbl
id | applicant_id | payment_status | enrollment_status |
--------------------------------------------------------------
1 | 1 | pending | null |
--------------------------------------------------------------
Моя цель состоит в том, чтобы получить всех заявителей, включая Applicant_id 1 if
:
- The
payment_status
на enrollmentRequestContentTbl
равно оплачено payment_status
на enrollmentRequestContentTbl
равно неоплачено , а enrollment_status
равно back_out
или declined
Остальное возможное условие будет проигнорировано и не сможет быть получено из моего запроса.
В приведенной выше таблице будет игнорироваться заявитель 1, поскольку payment_status
равно pending
.
Если EnrollmentRequestContentTbl будет выглядеть так
id | applicant_id | payment_status | enrollment_status |
--------------------------------------------------------------
1 | 1 | paid | null |
--------------------------------------------------------------
или так.Поскольку paymet_status
является неоплаченным enrollment_status
должно быть back_out или отклонено
id | applicant_id | payment_status | enrollment_status |
--------------------------------------------------------------
1 | 1 | unpaid | back_out |
--------------------------------------------------------------
-
id | applicant_id | payment_status | enrollment_status |
--------------------------------------------------------------
1 | 1 | unpaid | declined |
--------------------------------------------------------------
Заявитель 1 будет включен в мой запрос и показан в моем списке.
- ApplicantModel
public function enrollmentRequestContent()
{
return $this->hasMany('App\EnrollmentRequestContent');
}
EnrollmentRequestContentModel
public function applicant()
{
return $this->belongsTo('App\Applicant')
}
Пока что это то, что я пробовал.
Контроллер
public function getApplicant()
{
$applicants = Applicant::orWhereDoesntHave('enrollmentRequestContent', function($q){
$q->where('payment_status', '!=', 'paid')
->where(function($qq) {
$qq->where('payment_status', '!=', 'unpaid')
->whereIn('enrollment_status', ['declined', 'back_out']);
});
})->get();
return $applicants;
}
Я использую красноречивый запрос laravel.