禁用Laravel的Eloquent时间戳

8 浏览
0 Comments

禁用Laravel的Eloquent时间戳

我正在将我们的一个Web应用程序从CodeIgniter转换为Laravel。然而,目前我们不想为所有的表添加 updated_at / created_at 字段,因为我们已经有一个日志类来深入完成所有这些。

我知道我可以在中设置$ timestamps = false;

Vendor\laravel\framework\src\illuminate\Datebase\Eloquent\Model.php

不过,我宁愿不改变Laravel的核心文件,也不愿意让我的每个模型都加上这个。是否有其他方法可以在所有模型中禁用此功能?

admin 更改状态以发布 2023年5月21日
0
0 Comments

只需在您的模型中加入此行代码:

public $timestamps = false;

就是这样!


示例:



在一个操作中禁用时间戳(例如在控制器中):

$post->content = 'Your content'; 
$post->timestamps = false; // Will not modify the timestamps on save
$post->save();


禁用所有模型的时间戳,创建一个新的BaseModel文件:


然后像这样为每个模型扩展BaseModel


0
0 Comments

你要么在每个模型中声明public $timestamps = false;,要么创建一个BaseModel,在那里定义,然后让所有模型都扩展它,而不是使用Eloquent。请注意,如果使用Eloquent,则必须在中间表中具有时间戳。

更新:请注意,自Laravel v3之后,中间表中不再需要时间戳。

更新:您也可以通过将$table->timestamps()从迁移中删除来禁用时间戳。

0