【发布时间】:2021-03-28 16:31:52
【问题描述】:
我的公司有 30 个依赖项,每个用户都与一个依赖项相关联,但它们会不时移动,具体取决于合同类型,对依赖项的分配可以有固定日期或可以打开(null )。我使用数据透视表跟踪用户分配到的依赖项,该表存储dependency_id、user_id、分配给该依赖项的日期以及合同日期是否已知,或者他们何时从公司搬迁或退休,end_at 列获取一个日期值。
当我想知道用户有哪些依赖项时,我会使用
$user->dependencies;
但现在我想知道用户的活动依赖关系,所以我构建了这样的 getActiveDependency 方法:
$user->dependencies()
->wherePivot( 'ended_at', '>', \Carbon\Carbon::now()->format( 'Y-m-d' ) )
->orWherePivot( 'ended_at', null )
->first();
我解释我的查询: 第一行只是查询 hasMany 第二行将过滤所有有结束日期的,但它比现在大 第三行将在查询中添加 end 值为 null 的查询 最后一行只得到第一个结果,因为任何用户只能分配给一个依赖项,并且在给定时间任何用户只有一个依赖项处于活动状态。
当我使用第一行和第二行或第一行和第三行执行查询时,我得到了预期的结果,但是当我执行整个查询时,我得到了一个只分配给一个依赖项的用户的 495 个结果。
是否存在导致此问题的已知错误?
我是否使用了错误的查询?
谢谢
【问题讨论】:
标签: laravel pivot-table relationship