Laravel仅获取日期范围内的更新行-使用WhereBetween和查询中的Where

时间:2019-07-09 08:52:35

标签: laravel eloquent

我在数据库中有作业表,其中的默认列为 created_at updated_at

我想返回创建的作业数量和更新的数量。

但是,当在创建时填充了updated_at列时,我想排除所有updated_at值与created_at值相同的作业(以便仅获取自创建以来已更新的作业)。

我使用以下代码获取某个时间范围内的更新作业数。

  $jobsUpdated = Job::where('id', $id)
            ->whereBetween('updated_at', [$value['fromDate'], $value['tillDate']])
            ->count();

如何添加另一个where子句以排除与created_at具有相同值的结果。

理论上类似:

            ->andWhere('updated_at', '!=' , 'created_at')

但是andWhere不存在,所以这只是为了显示我的想法。

谢谢!

1 个答案:

答案 0 :(得分:0)

    $jobsUpdated = Job::where('id', $id)
           ->whereBetween('updated_at', [$value['fromDate'], $value['tillDate']])
           ->whereColumn('updated_at', '!=' , 'created_at')
           ->count();

使用官方doc引用的whereColumn()函数比较列值