Arrays LARAVEL使用数组更新数据
我想用数组更新我的数据,但它的错误是因为我在查找数据时使用了“like”查询。这是代码Arrays LARAVEL使用数组更新数据,arrays,laravel,eloquent,sql-update,Arrays,Laravel,Eloquent,Sql Update,我想用数组更新我的数据,但它的错误是因为我在查找数据时使用了“like”查询。这是代码 $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' =&g
$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')
]);
有什么解决办法吗??谢谢。您无法使用类似于的
来比较日期时间列
使用注释中建议的=
进行比较也不会产生预期结果,将2017-08-29
插入2017-08-29 00:00:00
(请参阅)
1。迄今为止的演员阵容
假设您使用的是MySQL,您可以将查询列的类型强制转换为DATE
,如下所示:
$query->whereRaw('DATE(datetime_in) = ?', [$day])…
PostgreSQL:
2。介于
或者,您可以使用whereBetween
进行查询,并使用指定一天的开始结束时间作为时间
不应该有错误。您可以添加调试器的详细输出吗?@Buglinjo服务器现在关闭,因此我无法显示输出,但是如果我在mysql中运行代码,错误如下不正确的日期时间值:'%2017-08-29%'对于列“datetime\u in”
您应该在varchar或text not datetime上使用like筛选器。在datetime上只需像这样使用=@Buglinjo<代码>更新考勤设置datetime_out=“2017-08-29 15:06:00”,其中用户id=201037917001和datetime_in=“2017-08-29”代码>如下:考勤::where('user_id',$pin)->where('datetime_in','=',$date[0])->更新(['datetime_out'=>$datetime',updated_at'=>date('Y-m-d'))代码>
$query->whereRaw('datetime_in::date = ?', [$day])…
use Carbon\Carbon;
$startOfDay = new Carbon($datetime)->startOfDay();
$endOfDay = new Carbon($datetime)->endOfDay();
$query->whereBetween('datetime_in', [$startOfDay, $endOfDay])…