Mi fábrica de modelos:

<?php        

    $factory->define(App\Models\Customer::class, function (Faker\Generator $faker) {
        return [
            'name' => $faker->company,
            'email' => $faker->unique()->safeEmail,
            'status'=> $faker->numberBetween($min = 0, $max = 2),
            'slug'=> $faker->slug,
        ];
    });

Sembradora de bases de datos

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $customers= factory(App\Models\Customer::class, 100)->create();

    }
}

Cuando corro

php artisan db:seed

Recibo el error

  [Symfony\Component\Debug\Exception\FatalThrowableError]
  Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting '
  ]'

He intentado todo lo que puedo pensar, pero no puedo encontrar el problema ...


Editar:

Olvidé mencionar que esto funcionaba bien un día antes y luego "se rompió" cuando comencé a agregar más ModelFactories (en archivos separados). Luego descarté todos mis cambios (del control de fuente) para estar 100% seguro de que no había cambiado nada. El único otro aspecto podría ser que tengo algo en el .gitignore que puede haberse actualizado y no fue revertido:

/node_modules
/public/storage
/public/hot
/storage/*.key
/.idea
Homestead.json
Homestead.yaml
0
seekay 2 mar. 2017 a las 06:19

2 respuestas

La mejor respuesta

Ok, entonces encontré la razón y me sentí muy idiota al respecto, pero lo publiqué aquí de todos modos en caso de que alguien siga mis pasos.

El problema era que había otras ModelFactories en la carpeta de la base de datos / fábricas y parece que la ejecución de php artisan db:seed también analiza esos archivos, a pesar de que no están referenciados en DatabaseSeeder clase. Uno de esos archivos tenía una sintaxis incorrecta de muchos y eso estaba causando el error.

La única forma en que me di cuenta fue que ejecuté el método factory-> create dentro de php artisan tinker y el mensaje de error que arrojó hacía referencia a esta otra definición de fábrica.

FWIW, luego utilicé el enfoque descrito aquí para mis relaciones, por las razones mencionadas en la pregunta allí ...

0
Community 23 may. 2017 a las 12:09

Parece que el problema es esta línea:

'status'=> $faker->numberBetween($min = 0, $max = 2),

Debe ser:

'status'=> $faker->numberBetween(0, 2),
1
Marcin Nabiałek 2 mar. 2017 a las 05:41