create_at / updated_at равен нулю при отправке файла - PullRequest
0 голосов
/ 28 февраля 2020

Я использую laravel, и я создал следующую сеялку:

    public function run()
    {
        $faker = Faker\Factory::create();
        $limit = 20;

        for ($i = 0; $i < $limit; $i++) {
            DB::table('data_sources')->insert([
                'name' => $faker->name(),
                'description' => $faker->sentence(),
            ]);
        }
    }

Мой файл миграции выглядит следующим образом:

    public function up()
    {
        Schema::create('data_sources', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name')->nullable();
            $table->string('description')->nullable();
            $table->unsignedBigInteger('google_sheets_id')->nullable();
            $table->foreign('google_sheets_id')->references('id')->on('google_sheets')->onDelete('cascade');
            $table->timestamps();
        });
    }

При работе только сеялки name и description обновляется.

Любые предложения, почему timestamps() не обновляется?

Цените ваши ответы!

Ответы [ 3 ]

1 голос
/ 28 февраля 2020

Атрибуты created_at и updated_at будут установлены автоматически, если вы используете модель Eloquent .

Но вы используете Raw SQL Queries. В этом случае вам нужно вставить данные вручную следующим образом.

Поверх класса

use \Illuminate\Support\Carbon;

И изменить ваш метод выполнения с помощью create_at, updated_at

public function run()
{
    $faker = Faker\Factory::create();
    $limit = 20;

    for ($i = 0; $i < $limit; $i++) {
        DB::table('data_sources')->insert([
            'name' => $faker->name(),
            'description' => $faker->sentence(),
            'created_at' => Carbon::now()->toDateTimeString(),
            'updated_at' => Carbon::now()->toDateTimeString()
        ]);
    }
}
1 голос
/ 28 февраля 2020

Добавьте это к вашей сеялке

'created_at' => Carbon::now()->format('Y-m-d H:i:s');
'updated_at' => Carbon::now()->format('Y-m-d H:i:s');

Не забудьте импортировать Carbon класс

1 голос
/ 28 февраля 2020

Атрибуты created_at и updated_at будут установлены автоматически, если вы используете Eloquent модель . если у вас нет модели для вашей таблицы data_sources, вы можете создать ее:

php artisan make:model DataSource

Затем использовать ее для вставки новой записи:

$dataSource = new DataSource;
$dataSource->name = $faker->name();
$dataSource->description = $faker->sentence();
$dataSource->save();

Или с помощью create метод:

App\DataSource::create([
    'name' => $faker->name(),
    'description' => $faker->sentence(),
]);

Примечание: метод create защищает модель от массового назначения по умолчанию, поэтому не забудьте определить свойство $fillable для модели :

protected $fillable = ['name', 'description'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...