我正在尝试删除过去30天内未查看过的所有条目,这些条目是在30多天前创建的。
列last_viewed_at
的默认值为null
,因此,如果条目在5天之前为created_at
且未被查看,则该行不应被删除。
我目前正在使用
$medias = Media::where('last_viewed_at', '<=', $delete_after_x_days)->get();
此代码段不包含过去30天内创建媒体项目且尚未查看的情景,因此不应删除。
不知何故,如果created_at
为空,我需要检查last_viewed_at
以确保媒体超过30天。
非常感谢任何帮助!
答案 0 :(得分:0)
我不知道你的模型如何使用,但你的条件看起来像这样,
last_viewed_at is not null and last_viewed_at<= $delete_after_x_days
答案 1 :(得分:0)
最后,我想出了一个解决方案,感谢@knowledge ....&#39。提示。
$medias = Media::where('created_at', '<=', $delete_after_x_days)
->where(function ($medias) use ($delete_after_x_days) {
$medias->where('last_viewed_at', '<=', $delete_after_x_days)
->orWhereNull('last_viewed_at');
})
->get();
这可确保条目超过x天且last_viewed_at
也超过30天或为空。