为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 中保存数据时如何禁用 updated_at 和 created_at

在 Laravel 中保存数据时如何禁用 updated_at 和 created_at

PHP
婷婷同学_ 2021-11-13 16:38:21
我试图在模型函数中保存数据。使用模型的 save() 函数时,我看到一些错误,如下所示。Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into account_types( name, updated_at, created_at) values (manufactuer, 2019-08-05 05:33:57, 2019-08-05 05:33:57)) 在文件 F:\HTML&我已经删除了表中的 created_at 和 updated_at 列,因为我不需要它。我想知道在 Laravel 中使用模型 save() 函数时如何禁用 created_at 和 update_at 数据保存。<?phpnamespace pshub;use Illuminate\Database\Eloquent\Model;class AccountType extends Model{    /**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = ['name'];    // Create Type Function    public function createType($type) {        $existence = $this->where('name', $type)->get();        if (sizeof($existence) > 0) {            return $this->where('name', $type);        } else {            $this->name = $type;            $this->save();            return $this->id;        }    }}
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

只需添加这个:

public $timestamps = false;

在你的模型中,你很高兴。


查看完整回答
反对 回复 2021-11-13
?
翻阅古今

TA贡献1780条经验 获得超5个赞

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


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


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


你可以这样使用。


public $timestamps = false;


  public function setUpdatedAt($value)

{

  return NULL;

}



public function setCreatedAt($value)

{

  return NULL;

}


查看完整回答
反对 回复 2021-11-13
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信