php - 覆盖created_at值

标签 php laravel date laravel-5 laravel-5.5

我正在尝试将日期插入创建时间,但没有任何效果

我尝试正常使用 create

$this->create([ 'product_id' => "$id", 'shop_name' => $shop,'created_at' => $date ]);

我尝试更改日期格式以匹配 laravel

$date = date('Y-m-d H:i:s',strtotime($id['created_at']));

我还尝试使用更改器(mutator)每次更改值

public function setFirstNameAttribute($value)
{
    $this->attributes['created_at'] = $value;
}

如何在 created_at 中设置特定日期而不是默认日期?

最佳答案

您是否为您的模型设置了可填充或 protected 数组?

如果是这样,create 方法将跳过不可批量分配的字段。

如果你想填写自己的,你可以这样做:

$product = app(Product::class);
$product->timestamps = false; // disable timestamps for this creation

// set what you want to set
$product->product_id = $id;
$product->shop_name = $shop;
$product->created_at = $datetime; // <- datetime here
$product->save();

尽管如此,如果您查看代码(vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php),并且created_at字段是可填写的,那么它不应该如果在创建期间设置了另一个值,请设置另一个值。 (请参阅此处的 isDirty 检查)

<小时/>

如果您不想以正常方式使用created_at和updated_at,只需在模型中将时间戳设置为false即可:

public $timestamps = false;

关于php - 覆盖created_at值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48651379/

相关文章:

Google App Engine 上的 phpMyAdmin

javascript - 单击时从其他具有相同名称的类中隐藏一个类

php - Laravel 急切加载 4 个表

sql - 甲骨文日期序列?

php - 如何在 phpMyAdmin 中将字符串转换为日期?

php - 仅在 Laravel Events 中返回时间戳

php - 通过 get 使用唯一 token 是否安全?

javascript - 结合 vuejs v-repeat 和 php foreach 循环?

php - Laravel 4 - 重定向回请求来自的同一页面

python - 只保留某一天 python 的最后一个时间戳