我area在两个表中有一个相似的 ( ) 值one,two并且这两个表与主表有关系master。一次,该master表将仅在一个关系中包含数据,而另一个将是null。
使用这种架构,我有一个搜索页面,用户可以在其中搜索与这些表相关的任何值,并且搜索字段放置AND有条件。
在这里,如果用户输入一些值,area我需要检查任何一个表 (one或two) 中存在的面积值,而不会破坏AND条件。尝试了下面的代码,但它违反了AND规则并考虑了OR. 有什么建议可以解决吗?
$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);
绝地无双
开满天机
DIEA