我有一个表mdl_forum_posts,其中创建了一个BIGINT字段(数据库不是我的,所以不要怪字段的类型)。值的示例是1504170577。该值另存为时间戳。
每个星期一(一周的第一天)都会执行一次cron,需要选择前一周(前一周的创建值)中创建的所有行。
我正在尝试这样做:
$currentDate = \Carbon\Carbon::now();
$agoDate = $currentDate->subDays($currentDate->dayOfWeek)->subWeek();
$postsNL = DB::table('mdl_forum_posts')->whereBetween('created', array($agoDate,$currentDate))->get();
但这不会返回任何行(应该!)。
最佳答案
请记住,对Carbon对象执行某些操作时,它将修改对象本身的实例,因此基本上是在运行语句时
$agoDate = $currentDate->subDays($currentDate->dayOfWeek)->subWeek();
您还正在修改
$currentDate
。下面的代码应该可以解决问题:
$currentDate = \Carbon\Carbon::now();
$agoDate = $currentDate->copy()->subDays($currentDate->dayOfWeek)->subWeek()->setTime(23, 59, 59);
$postsNL = DB::table('mdl_forum_posts')
->whereBetween('created', array($agoDate->timestamp, $currentDate->timestamp))
->get();
copy
方法将对Carbon
实例的副本进行所有修改,而不修改原始副本。希望能帮助到你
关于php - Laravel-选择星期一前一周的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46056404/