如何检查新的年龄范围是否重叠?

时间:2019-04-13 16:14:43

标签: laravel eloquent

我的数据库表称为时间轴,它具有这两列min_range和max_range。我正在尝试插入一个新的年龄范围,但我不希望它重叠。

如果年龄重叠,我希望它返回的内容为真,否则为假。

感谢您的帮助。

这就是我在Laravel中尝试过的方法。我试图检查新的min_range是否在一个范围内。它适用于现有范围,但如果年龄不在范围内,则不允许我插入新的范围。

3.12.x

1 个答案:

答案 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();