2017-03-02 73 views
0

我ModelFactory:播種時Laravel ModelFactory錯誤

<?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, 
     ]; 
    }); 

數據庫播種機

<?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(); 

    } 
} 

當我運行

php artisan db:seed 

我得到的錯誤

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

我用盡了一切我能想到的,但不能發現問題...


編輯:

我忘了提,這是罰款前一天工作,然後「打破」,因爲我開始添加更多ModelFactories(在單獨的文件中)。然後我放棄了所有的改變(來自源代碼控制),100%肯定我沒有改變任何東西。唯一的其他方面可能是因爲我有可能已經更新了的.gitignore的東西,並沒有回滾:

/node_modules 
/public/storage 
/public/hot 
/storage/*.key 
/.idea 
Homestead.json 
Homestead.yaml 
+0

我沒有看到你發佈的代碼的任何語法錯誤。不過,從錯誤消息看來,您似乎在某個地方有一個未關閉的數組。 – patricus

回答

0

好的,所以我找到了原因,並覺得它真的很愚蠢,但無論如何貼在這裏,以防某人跟隨我的腳步。

的問題是,有數據庫中的其他ModelFactories /工廠文件夾,似乎運行php artisan db:seed解析爲好,即使他們沒有在DatabaseSeeder類引用這些文件。其中一個文件具有錯誤的一對多語法,導致錯誤。

我意識到這一點的唯一方法是我在php artisan tinker內運行了工廠 - >創建方法,並且它引發的錯誤消息引用了此其他工廠定義。

FWIW,然後我用概括here我關係的辦法 - 在那裏提出相關問題所提及的原因...

1

看來問題是這一行:

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

它應該是:

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

雖然可能沒有打算,但這不應該是一個語法錯誤。它只是在傳遞給'numberBetween()'方法時分配兩個變量。 – patricus

+0

@Marcin,仍然有同樣的錯誤。更新了一些額外的背景信息的問題 – seekay