2017-08-01 156 views
2

我正在尝试使用in_timeout_time在同一个表中更新daiy_attendance表中的hours_worked列。已存储在表中的in_timeout_timeLaravel中的数据库更新查询?

所以我使用timediff来获得差异。当我在phpmyadmin sql格式上尝试时,查询运行并正确执行,但是当我尝试在程序中运行时,它不更新hours_worked列。它不会给出任何错误。

$sql5 = "UPDATE daily_attendances SET hours_worked = TIMEDIFF(out_time,in_time) WHERE in_time != '' AND out_time != '' "; 
$result2 = DB::statement(DB::raw($sql5)); 
+0

不知道是否是相关的:你设置 'time_worked' 可填充? –

+0

@JohnDoe它可以为空 – colombo

+1

@JohnDoe OP没有使用模型,所以'$ fillable'属性是不相关的。 – fubar

回答

1

尝试

DB::table('daily_attendances') 
       ->whereRaw("in_time != '' AND out_time != ''") 
       ->update(['hours_worked ' =>DB::raw('TIMEDIFF(out_time,in_time)')]); 

OR 只使用db:statement

$sql5 = "UPDATE daily_attendances SET hours_worked = TIMEDIFF(out_time,in_time) WHERE in_time != '' AND out_time != '' "; 
$result2 = DB::statement($sql5); 
+0

都不起作用 – colombo

+0

检查你的数据库连接,是否连接到你试过的同一个数据库phpmyadmin – sumit

+0

连接是好的 – colombo