Laravel种子器,调用未定义的方法::create


Laravel Seeder, call to undefined method ::create

我有一个不同型号的播种机,其中一个在我尝试artisan db:seed

时给了我以下错误
PHP Fatal error:  Call to undefined method Illuminate'Events'Dispatcher::create() in C:'www'site'bootstrap'compiled.php on line 3155

这里是Event.php,似乎是导致问题的模型:

<?php
class Event extends Eloquent {
    protected $fillable = array('name', 'played_on');
    protected $table = 'events';
    // RELATIONSHIPS ----------------------------
    // Event has many Decks
    public function decks() {
        return $this->belongsToMany('Deck', 'decks_events', 'event_id', 'deck_id');
    }
}

注意:我添加了protected $table = 'events',试图看看这是否导致了问题,我不认为这是必需的。这是播种者的一部分。Deck部分工作得很好(事实上,我确实看到"添加一些卡牌到一些牌组"消息,因为它崩溃了)

    // Decks
    $deck_1 = Deck::create(array(
        'meta' => 'U/W Control',
        'player' => 'Cookie Monster'
    ));
    $deck_2 = Deck::create(array(
        'meta' => 'RDW',
        'player' => 'Suzy Waterbottle'
    ));
    // All 3 cards in Deck 1
    $card_1->decks()->attach($deck_1->id);
    $card_2->decks()->attach($deck_1->id);
    $card_3->decks()->attach($deck_1->id);
    // 2 cards in Deck 2
    $card_1->decks()->attach($deck_2->id);
    $card_2->decks()->attach($deck_2->id);
    $this->command->info('Added some cards to some decks');
    // Events
    $event_1 = Event::create(array(
        'name' => 'Super Duper Tourney',
        'played_on' => '07/05/2014'
    ));
    $deck_1->events()->attach($event_1->id);
    $deck_2->events()->attach($event_1->id);
    $this->command->info('Added decks to the event');

这让我相信在$event_1 = Event::create行上发生了一些错误,但我无法弄清楚它看起来完全像$deck_1使用的代码…和$deck_2

Event是Laravel中的"保留"字。您可能必须更改它或为您的类命名空间。

所以,代替你的事件模型类,它是使用Laravel事件,这是Illuminate'Events'Dispatcher

它实际上是我们在app/config/app.php上的别名。

命名空间:

<?php namespace App;
use Eloquent;
class Event extends Eloquent {
   ...
}

使用名称空间:

<?php
use App'Event;
class Whatever {
    $event_1 = Event::create(array(
        'name' => 'Super Duper Tourney',
        'played_on' => '07/05/2014'
    ));
}

你可能需要

composer dumpautoload