当我尝试获取具有相同created_at
和updated_at
的记录时:
->where('created_at','=','updated_at')
其中created_at
和updated_at
相同。我一无所获。有什么想法解决这个问题吗?
答案 0 :(得分:5)
<强> whereColumn 强>
whereColumn 方法可用于验证两列是否相等
在您的示例中,它将是:
->whereColumn('created_at', 'updated_at')
答案 1 :(得分:0)
我认为你被困住的是你如何运行查询。看起来你正试图传递updated_at
,但这对数据库没有任何意义。
如果您想要获取表中所有记录的列表,并且只显示完全具有相同created_at
和updated_at
列的记录,我会查询所有记录,然后通过他们检查。根据你的问题的措辞,你没有一个难以核对的日期,每个日期取决于同一记录中的相应日期。
以下是我将如何做(我认为)你想做的一个例子:
$users = User::all();
$modifiedUsers = $users->reject(function ($value, $key) {
return !$value->created_at->isSameDay($value->updated_at);
});
dd($modifiedUsers);
在上面的示例中,我们获取了所有用户,然后我们只创建了一个新集合,其中只包含在同一天创建和修改的用户。任何具有created_at
和updated_at
两个不同日期值的用户都会被我们的新收藏集$modifiedUsers
)拒绝。
reject()
方法的工作方式是将集合中的每个项目传递给回调并对其进行评估。如果条件为true
,则会从集合中拒绝它。因此,既然我们知道Laravel将created_at
和updated_at
转换为Carbon实例,我们可以使用Carbon的isSameDay()
方法来比较日期。然后我们简单地添加一个!
来翻转条件,这样我们就会拒绝那些没有相同创建/更新日期的记录。
希望这有帮助。