我想使用数组更新我的数据,但是它的错误导致我正在使用"喜欢"查找数据时查询。这是代码。
$pin = 10590;
$datetime = "2017-08-29 15:05:00";
$date = explode(' ', $datetime);
Attendance::where('user_id', $pin)->where('datetime_in', 'like', '%' . $date[0] . '%')->update([
'datetime_out' => $datetime,
'updated_at' => date('Y-m-d')
]);
任何解决方案?感谢。
答案 0 :(得分:0)
您无法使用like
比较日期时间列。
根据评论中的建议使用=
进行比较也不会产生所需的结果,将2017-08-29
插入到2017-08-29 00:00:00
(请参阅SO Answer)。
<强> 1。将列投射到DATE
假设您正在使用MySQL,您可以将查询列的类型转换为DATE
,如下所示:
$query->whereRaw('DATE(datetime_in) = ?', [$day])…
的PostgreSQL:
$query->whereRaw('datetime_in::date = ?', [$day])…
<强> 2。在哪里
或者,您可以使用whereBetween
进行查询,并使用Carbon将开始结束日期指定为时间。
use Carbon\Carbon;
$startOfDay = new Carbon($datetime)->startOfDay();
$endOfDay = new Carbon($datetime)->endOfDay();
$query->whereBetween('datetime_in', [$startOfDay, $endOfDay])…