Laravel Eloquent 更新 created_at 值

3

我需要更改一篇文章的创建时间(created_at),因为我要根据创建时间发送短信。但是当我尝试更改created_at的值时,它并没有改变。

public function Controller(Posts $post){
    $post->update(['created_at'=>Carbon::today()]);
}

好的,它没有说要更新created_at - 尝试使用->update('created_at', Carbon::now())或类似的方法。 - Joel Hinz
@JoelHinz 不工作 - Morteza Negahi
4个回答

10

created_at 通常不像那样进行 批量赋值。你可能需要将其添加到 Post 模型的 $fillable 属性中,例如:

protected $fillable = [...., 'created_at']; 
注意,正如其他人指出的那样,Carbon::today() 似乎不是正确的使用方式 - 它可以工作并提供有效的时间戳,但时间戳是指午夜。如果您真的想要实际更改时间,您可能需要使用 Carbon::now()

1
尝试这个。
public function Controller(Posts $post){
      $post->created_at = Carbon::today();
      $post->save(['timestamps' => false]);
}

1

Carbon::today()并没有生成一个有效的时间戳。您需要使用Carbon::today()->toDateTimeString()来获取一个有效的时间戳。

更新后的片段:

public function Controller(Posts $post){
    $post->update(['created_at' => Carbon::today()->toDateTimeString()]);
}

0
你还可以使用$guarded来允许所有其他属性可填充
protected $guarded = ['id'];

请参阅关于GuardsAttributes的详细文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接