Вы можете увидеть фактический запрос, который будет выполняться с помощью метода toSql()
.
DB::table('general_ledger as g')
->join('regions as f','g.from_province','=','f.province')
->join('regions as t','g.to_province','=','t.province')
->where('g.from_province',$province)
->whereBetween('g.created_at',[$from_date,$to_date])
->orwhere('g.to_province',$province)
->select('g.order_bar','g.price','g.delivery_cost','g.type','f.ar_name as from_province','t.ar_name as to_province','visual_status','g.created_at')
->toSql();
Я думаю, вы хотите, чтобы ваш запрос был таким:
SELECT *
FROM `general_ledger`
WHERE created_at BETWEEN '2020-06-01' and '2020-08-01'
AND( from_province = 0 or to_province = 0)
Итак, в Laravel вы можете сгруппировать запрос AND:
DB::table('general_ledger as g')
->join('regions as f','g.from_province','=','f.province')
->join('regions as t','g.to_province','=','t.province')
->whereBetween('g.created_at',[$from_date,$to_date])
->where(function(\Illuminate\Database\Query\Builder $q) use ($province){
$q->where('g.from_province',$province);
$q->orWhere('g.to_province',$province);
})
->select('g.order_bar','g.price','g.delivery_cost','g.type','f.ar_name as from_province','t.ar_name as to_province','visual_status','g.created_at')
->get()