我的数据库表称为时间轴,它具有这两列min_range和max_range。我正在尝试插入一个新的年龄范围,但我不希望它重叠。
如果年龄重叠,我希望它返回的内容为真,否则为假。
感谢您的帮助。
这就是我在Laravel中尝试过的方法。我试图检查新的min_range是否在一个范围内。它适用于现有范围,但如果年龄不在范围内,则不允许我插入新的范围。
3.12.x
答案 0 :(得分:0)
如果(A,B)其中(C,D)中包含C或D,则(A,B)段与(C,D)重叠,因此您可以这样做:
$innerRange = Timeline::where(function ($query) use ($request) {
$query->where('min_range', '<=', $request->min_range)
->where('max_range', '>=', $request->min_range); // contains min range
})->orWhere(function ($query) use ($request) {
$query->where('min_range', '<=', $request->max_range)
->where('max_range', '>=', $request->max_range); // contains max range
})->doesntExist();