Estoy tratando de insertar datos estáticos, con la ayuda de la sembradora y Eloquent como se indica a continuación.

use Illuminate\Database\Seeder;
use App\Role;

class RoleSeeder extends Seeder
{
    public function run()
    {
        Role::insert(array(
            array('name' => 'admin'),
            array('name' => 'user')
        ));
    }
}

Incluso después de usar Eloquent, obtengo una marca de tiempo nula en la base de datos.

1
parth 20 jul. 2020 a las 05:05

3 respuestas

La mejor respuesta

Las columnas timestamp ( created_at y updated_at ) se asignarán automáticamente solo si está utilizando Eloquent
El método save() y el método create son Elocuentes .
Si bien el método insert no es no elocuente , es un método generador de consultas. Entonces use el método create en su lugar:

public function run()
    {
        Role::create(array(
            array('name' => 'admin'),
            array('name' => 'user')
        ));
    }

Cuando está utilizando el generador de consultas, debe created_at y updated_at valor usted mismo:

Role::insert(array(
  array('name' => 'admin'),
  array('name' => 'user'),
  array('created_at' => \Carbon\Carbon::now()),
  array('updated_at' => \Carbon\Carbon::now()),
));
1
STA 20 jul. 2020 a las 05:59

Intenta esto en su lugar

<?php

use Illuminate\Database\Seeder;
use App\Role;
class RoleSeeder extends Seeder
{
    public function run()
    {
        Role::truncate();
        Role::create(['name' => 'admin']);
        Role::create(['name' => 'user']);
    }
}

El error se genera porque está utilizando insertar en lugar de crear.

0
Bishal Rana 20 jul. 2020 a las 04:22

Utilice el método create

el método de inserción no toma la marca de tiempo

use Illuminate\Database\Seeder;
use App\Role;

class RoleSeeder extends Seeder
{
    public function run()
    {
        Role::create(array(
            array('name' => 'admin'),
            array('name' => 'user')
        ));
    }
}
0
Vikas Katariya 20 jul. 2020 a las 04:21