我的查詢正在獲取兩個日期之間的現有交易。但是, whereNotIn 函式不會過濾掉事務。它仍然選擇被取消、拒絕或完成的交易。我的查詢似乎有什么問題?謝謝
$associates = Associate::join('transactions', 'associate.associate_id', '=', 'transactions.associate_id')
->select('associate.associate_id')
->whereNotIn('status', ['Cancelled', 'Declined', 'Finished'])
->whereBetween('startdate',[$start_date, $end_date])
->orWhereBetween('enddate',[$start_date, $end_date])
->orWhere(function ($query) use ($request) {
$start_date = new DateTime($request->input('start_date'));
$end_date = new DateTime($request->input('end_date'));
$query->where('startdate','>=',$start_date)
->where('enddate','<=',$end_date);
})
->get();
uj5u.com熱心網友回復:
你應該組織你的'wheres'來做你想做的事情,要做到這一點,你可以使用 where 和 close :
$associates = Associate::join('transactions', 'associate.associate_id', '=', 'transactions.associate_id')
->select('associate.associate_id')
->whereNotIn('status', ['Cancelled', 'Declined', 'Finished'])
->where(function ($query) use ($request, $end_date, $start_date) {
$query->whereBetween('startdate',[$start_date, $end_date])
->orWhereBetween('enddate',[$start_date, $end_date])
->orWhere(function ($query) use ($request) {
$start_date = new DateTime($request->input('start_date'));
$end_date = new DateTime($request->input('end_date'));
$query->where('startdate','>=',$start_date)
->where('enddate','<=',$end_date);
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/345245.html
