Jou*_*ssa 6 php date laravel laravel-5 laravel-5.5
我正在尝试将日期插入到 created at 但没有任何效果
我试着像往常一样使用 create
$this->create([ 'product_id' => "$id", 'shop_name' => $shop,'created_at' => $date ]);
Run Code Online (Sandbox Code Playgroud)
我试图更改日期格式以匹配 laravel
$date = date('Y-m-d H:i:s',strtotime($id['created_at']));
Run Code Online (Sandbox Code Playgroud)
我还尝试让用户修改器每次更改值
public function setFirstNameAttribute($value)
{
$this->attributes['created_at'] = $value;
}
Run Code Online (Sandbox Code Playgroud)
如何设置特定日期created_at 而不是默认日期?
Rob*_*ert 10
您是否为您的模型设置了可填充或受保护的数组?
如果是这样,该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();
Run Code Online (Sandbox Code Playgroud)
虽然,如果您查看代码 ( vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php),并且 created_at 字段是可填充的,但如果在创建期间设置,则不应设置其他值。(查看isDirty那里的支票)
如果您不想以正常方式使用 created_at 和 updated_at,只需在模型中将时间戳设置为 false:
public $timestamps = false;
Run Code Online (Sandbox Code Playgroud)