【问题标题】:Adding two created_at on one insert在一个插入上添加两个 created_at
【发布时间】:2019-11-11 18:53:53
【问题描述】:

我想在数据库列上添加另一个 created_at 列以供参考。

我想同时拥有 created_at 和 created_at1。

这就是我的模型中的内容:

const CREATED_AT = 'created_at1';

protected $dates = [created_at, created_at1];

但我收到此错误:字段“created_at”没有默认值。

【问题讨论】:

  • 如果您想以不同的格式显示创建日期,您可以格式化并附加到模型

标签: laravel laravel-5 eloquent laravel-4


【解决方案1】:

你不需要向 created_at 添加强制转换,因为 Laravel 已经为你完成了。

你需要在字符串里面添加类似

protected $dates = ['created_at1']

如果要在创建新模型时设置 created_at1,可以添加Model Events

在你的模型中,

protected static function boot(){
    parent::boot();

    static::creating(function($model){
        $model->created_at1 = Carbon::now();
    });
}

内部控制器

$model = Model::create([
    ...
    ]);

现在它将设置 created_at 和 created_at1

对于插入,您必须手动将值保存到 created_at1 因为它不会反映模型事件。

Model::insert([
    ...
    'created_at1' => Carbon::now()
]);

【讨论】:

  • laravel 如何检测 created_at1 是否是插入行的日期?
  • 是的。为此,您可以在 Schema 迁移中将该列设置为 datetime。并使用上面的答案。您遇到了语法错误。
  • 我已经创建了一个 created_date1,但是在移除了铸件之后,只有 created_at 被填满了日期。
  • 您是否删除了 created_at 和 created_at1 的强制转换?还是仅针对 created_at 删除?
  • 我只删除创建的 at。你能给我一些你的意思的代码吗? :D
【解决方案2】:

在插入数据时,您可能没有将值传递给 created_at 列。请检查。如果不是这种情况,请提供有关您的问题的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2011-07-26
    相关资源
    最近更新 更多