Laravel大量更新而不会碰到时间戳

时间:2018-07-19 14:53:22

标签: laravel timestamp

如果是单个更新,我们可以使用

$variable->timestamps = false;

但是如果我想在不涉及时间戳的情况下进行大量更新。

当前我的代码是

$allapps = App::select('id','name','parent_id','view')->where('published',true)->whereNotIn('id', $excludeappsid)->update(['timestamps' => false],['view' => 0]);

但是我得到了错误

  

SQLSTATE [42S22]:找不到列:1054中的未知列'timestamps'   “字段列表”

任何解决方案?

谢谢。

3 个答案:

答案 0 :(得分:1)

据我所知这是不可能的。我认为这甚至是不可能的。

但是,您可以直接使用查询构建器而无需Eloquent,这不会更新时间戳。

\DB::table(with(App::class)->getTable())
    ->where('published', true)
    ->whereNotIn('id', $excludeappsid)
    ->update(['view' => 0]);

答案 1 :(得分:0)

自您的模型以来,您可以将时间戳记标记为false

public $timestamps = false;

或者您什么都不做。 :)

    $allapps = App::select('id','name','parent_id','view')
                   ->where('published',true)
                   ->whereNotIn('id', $excludeappsid)
                   ->update(['view' => 0])

答案 2 :(得分:0)

尝试一下:

library(dplyr)

df %>%
  group_by(id.visit) %>%
  mutate(x_M = mean(x, na.rm = TRUE), x_MIN = min(x, na.rm = TRUE), 
         x_MAX = max(x, na.rm = TRUE), x_SD = sd(x, na.rm = TRUE), 
         across(x_M:x_MAX, tidyr::replace_na, 1), 
         x_SD = replace(x_SD ,is.na(x_SD), 0))

#  id.visit     x   x_M x_MIN x_MAX  x_SD
#  <chr>    <int> <dbl> <dbl> <dbl> <dbl>
#1 1-01         5     4     1     6  2.65
#2 1-01         1     4     1     6  2.65
#3 1-01         6     4     1     6  2.65
#4 1-04        NA     1     1     1  0   
#5 1-04        NA     1     1     1  0   
#6 1-04         1     1     1     1  0