Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays LARAVEL使用数组更新数据_Arrays_Laravel_Eloquent_Sql Update - Fatal编程技术网

Arrays LARAVEL使用数组更新数据

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

我想用数组更新我的数据,但它的错误是因为我在查找数据时使用了“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' => $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])…