LARAVEL使用数组更新数据

时间:2017-08-29 18:37:31

标签: arrays laravel eloquent sql-update

我想使用数组更新我的数据,但是它的错误导致我正在使用"喜欢"查找数据时查询。这是代码。

$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')
]);

任何解决方案?感谢。

1 个答案:

答案 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])…