Запрос Laravel Отфильтровывает Транзакции и Проверяет Между Двумя Датами

#php #mysql #laravel #database

Вопрос:

Мой запрос работает для получения существующих транзакций между двумя датами. Однако функция whereNotIn не отфильтровывает транзакцию. Он по-прежнему выбирает транзакции, которые были либо отменены, отклонены, либо завершены. В чем, по-видимому, проблема с моим запросом? Спасибо

 $associates = Associate::join('transactions', 'associate.associate_id', '=', 'transactions.associate_id')  -gt;select('associate.associate_id')  -gt;whereNotIn('status', ['Cancelled', 'Declined', 'Finished'])  -gt;whereBetween('startdate',[$start_date, $end_date])  -gt;orWhereBetween('enddate',[$start_date, $end_date])  -gt;orWhere(function ($query) use ($request) {  $start_date = new DateTime($request-gt;input('start_date'));  $end_date = new DateTime($request-gt;input('end_date'));  $query-gt;where('startdate','gt;=',$start_date)  -gt;where('enddate','lt;=',$end_date);  })  -gt;get();  

Ответ №1:

вы должны определить свои «где», чтобы делать именно то, что вы хотите, для этого вы можете использовать » где » с более близким:

 $associates = Associate::join('transactions', 'associate.associate_id', '=', 'transactions.associate_id')  -gt;select('associate.associate_id')  -gt;whereNotIn('status', ['Cancelled', 'Declined', 'Finished'])  -gt;where(function ($query) use ($request, $end_date, $start_date) {  $query-gt;whereBetween('startdate',[$start_date, $end_date])  -gt;orWhereBetween('enddate',[$start_date, $end_date])  -gt;orWhere(function ($query) use ($request) {  $start_date = new DateTime($request-gt;input('start_date'));  $end_date = new DateTime($request-gt;input('end_date'));  $query-gt;where('startdate','gt;=',$start_date)  -gt;where('enddate','lt;=',$end_date);  });  });  

Комментарии:

1. Спасибо вам за ваш совет. И спасибо вам за этот ответ, он сработал, что решило мою проблему! :))