禁用Laravel的雄辩时间戳

我正在将我们的Web应用程序之一从CodeIgniter转换为Laravel。 但是现在我们不想把updated_at / created_at字段添加到我们所有的表中,因为我们有一个日志logging类,它已经为我们做了更深入的工作。

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

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

不过,我宁愿不更改Laravel的核心文件,也不要让我的模型中的每个人都拥有这个文件。 有什么办法可以禁用所有模型的其他地方吗?

你要么必须声明public $timestamps = false; 在每个模型中,或者创build一个BaseModel,在那里定义它,让所有的模型扩展它,而不是雄辩。 如果你正在使用Eloquent,那么只需要知道数据透视表必须有时间戳。

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

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

只需将public $timestamps = false; 在你的模型中。

如果您只需要禁用更新updated_at,只需将此方法添加到您的模型。

 public function setUpdatedAtAttribute($value) { // to Disable updated_at } 

这将覆盖父setUpdatedAtAttribute()方法。 created_at将照常工作。 同样的方法,你可以写一个方法来禁止更新created_at只。

覆盖模型中的函数setUpdatedAt()getUpdatedAtColumn()

 public function setUpdatedAt($value) { //Do-nothing } public function getUpdatedAtColumn() { //Do-nothing } 

雄辩模型:

 class User extends Model { protected $table = 'users'; public $timestamps = false; } 

或者只是试试这个

 $users = new Users(); $users->timestamps = false; $users->name = 'John Doe'; $users->email = 'johndoe@example.com'; $users->save();