在 Laravel 中插入时,created_at 和 Updated_at 不会自动更新

Mie*_*kes 3 laravel

我使用 laravel 8 :

public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->integer('created_by')->nullable();
            $table->string('created_by_user')->nullable();
            $table->timestamps();
        });
    }
Run Code Online (Sandbox Code Playgroud)

楷模:

<?php

namespace App\Models\Backend\MySQL;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'user';
}
Run Code Online (Sandbox Code Playgroud)

在控制器中:

use App\Models\User;

public function store(Request $request) {
    $data = [
        'name' => !empty($request->name) ? $request->name : 'Jony',
        'created_by'    => auth()->user()->id,
        'created_by_user'    => auth()->user()->name,
    ];
    User::insert($data);
}
Run Code Online (Sandbox Code Playgroud)

我已经插入成功了。但问题是我的created_by 和updated_by 列没有自动更新。有什么办法可以解决这个问题吗?在user模型中我也没有设置protected $timestamps = false,但它不起作用。谢谢。

ehs*_*deh 6

insert 方法不适用于雄辩模型,并且不会更新created_at 和updated_at。你应该使用 create 方法代替。

create方法自动设置created_at和updated_at

在这里看到这个答案

/sf/answers/4065303021/