laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们
Posted
技术标签:
【中文标题】laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们【英文标题】:laravel - after removing updated_at and created_at columns from database laravel tries to insert into them 【发布时间】:2018-04-24 17:29:43 【问题描述】:我已经从数据库中删除了 created_at 和 updated_at,但是 laravel 尝试插入这些列,但是我已经从数据库和控制器中的代码中删除了。我认为有些东西被缓存了。顺便说一句,我不想在模型中使用 public $timestamps = false
,因为它们似乎是多余的和不需要的。
【问题讨论】:
您是否将它们从迁移中删除? 是的!从数据库、迁移、控制器中删除! 【参考方案1】:好吧,其实你需要设置:
public $timestamps = false;
而且它不是额外的和不需要的,因为默认情况下它假定模型具有时间戳(实际上将它们保留在几乎所有表中是非常合理的)。
时间戳用于保存记录:
if ($this->usesTimestamps())
$this->updateTimestamps();
因此,当您在表中没有这些列时,使用 Eloquent 将此属性设置为 false 时,没有其他更短的方法。
【讨论】:
所以你的意思是每个表都需要这两列并且它们是必需的??我不知道!因为我有几张桌子没有这两个并且工作正常! 如果你使用 Eloquent 保存所有表,默认情况下应该有时间戳,除了数据透视表。但是,如果您正在使用例如查询生成器,则不需要它们。 我不知道什么是数据透视表。我所知道的是我用过 Eloquent,他们都不需要它! 那么,如果您知道 Eloquent 不需要它们,为什么还要问 SO?正如我所说,默认情况下,如果您不将时间戳设置为 false,Eloquent 将始终尝试设置 created_at 和 updated_at 列以上是关于laravel - 从数据库中删除 updated_at 和 created_at 列后,laravel 尝试插入它们的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 利用 observer 类基于状态属性,对进行删除和修改的控制