I have one similar (area
) value in two tables one
and two
and these two tables has relation with main table master
. At a time, the master
table will be having data in one relation only and the other one will be null
.
With this architecture, I have a search page where user can search any values related to these tables and the search fields are placed with AND
condition.
Here, if user enters some value for area
I need to check the area value exists in any one of the tables (one
or two
) without breaking the AND
condition. Tried the below code but it is breaking AND
rule and considering OR
. Any suggestions to fix?
$result = Master::where(function ($query) use ($request) {
if ($request->filter == true) {
$query->where('user_id', Auth::user()->id);
}
// other conditions here
if (!empty($request->area_from) && !empty($request->area_to)) {
$query->whereHas('one', function ($query) use ($request) {
$query->whereBetween('area', [$request->area_from, $request->area_to]);
});
$query->orWhereHas('two', function ($query) use ($request) {
$query->whereBetween('area', [$request->area_from, $request->area_to]);
});
}
// other conditions here
})->with(['one', 'two'])->paginate($request->item);
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire