禁用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();