2015-11-05 4 views
0

Я новичок в Laravel,Посев таблица проваливается в Laravel 5,1

Я пытаюсь семя таблицы, и ремесленник всегда возвращает код 255.

Вот мой код

<?php 

use App\Grade; 
use Illuminate\Database\Seeder; 

class GradeSeeder extends Seeder { 

    public function run() 
    { 
     //This doesn't even work 
     DB::table('Grade')->delete(); 
//  Grade::create(['id' => '1','name' => "5 Kyu",'order' => 2]); 
    } 
} 

DatabaseSeeder.php

class DatabaseSeeder extends Seeder { 

    public function run() 
    { 
     Model::unguard(); 
     //Seed the countries 
     $this->call('CountriesSeeder'); 
     $this->command->info('Seeded the countries!'); 
     $this->call('GradeSeeder'); 
     $this->command->info('Seeded the grades!'); 
    } 

Commando используется

php artisan db:seed --class=GradeSeeder 
or 
php artisan db:seed // In this case seeding countries works but mine don't 

Вот модель:

class Grade extends Model { 

    protected $table = 'Grade'; 
    public $timestamps = true; 

    protected $fillable = [ 
     'name', 
     'order' 
    ]; 

}  

и здесь является миграция

class CreateGradeTable extends Migration { 

public function up() 
{ 
    Schema::create('Grade', function(Blueprint $table) { 
     $table->increments('id'); 
     $table->string("name")->unique(); 
     $table->tinyInteger("order"); 

    }); 
} 

public function down() 
{ 
    Schema::drop('Grade'); 
} 
} 
  1. Есть ли способ иметь журнал, что происходит. Исправлена ​​ошибка с помощью всего лишь 255 кода от Artisan - это не так здорово!
  2. Что случилось с моим кодом? Я просто прокомментировал строки создания, чтобы отбросить любые проблемы с данными. Моя таблица «Оценка» существует и пуста!

Журнал ошибок при вводе: композитор установки

> /usr/local/bin/composer install 
Loading composer repositories with package information 
Installing dependencies (including require-dev) from lock file 
Nothing to install or update 
Generating autoload files 
> php artisan clear-compiled 

Warning: require(/Applications/XAMPP/xamppfiles/htdocs/kendo/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in/ Applications/XAMPP/xamppfiles/htdocs/kendo/bootstrap/autoload.php on line 17 

Fatal error: require(): Failed opening required '/Applications/XAMPP/xamppfiles/htdocs/kendo/bootstrap/../vendor/autoload.php' (include_path='.:') in/ Applications/XAMPP/xamppfiles/htdocs/kendo/bootstrap/autoload.php on line 17 
Script php artisan clear-compiled handling the post-install-cmd event returned with an error 



    [RuntimeException] 
    Error Output:  



install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no- progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]... 



Process finished with exit code 255 at 19:51:06. 
Execution time: 941 ms. 
+1

Журнал Laravel находится в 'storage/logs/laravel.log'. То, что приходит на ум, состоит в том, что некоторые из столбцов вашей модели 'Grade' могут быть не заполнены (http://laravel.com/docs/5.1/eloquent#mass-assignment). – Bogdan

+0

Также более простой способ опорожнить таблицу модели - это «Grade :: truncate()», хотя ваш путь также правильный, поэтому это не является причиной ошибки (при условии, что имя таблицы правильно написано «Оценка»). – Bogdan

+0

Tx для вашего наблюдения, у меня не было заполняемых материалов. Я добавил его, но он все еще не работает :( Кроме того, laravel.log, похоже, регистрирует только запрос браузера, я ничего не вижу о своей ошибке artisan –

ответ

1

Есть два очевидных несоответствий там:

  1. Каждый столбец с добавлением create метода модели должны быть заполняемых, однако id не , Также вы не должны передавать его вообще (если вам действительно не нужно по какой-то причине), потому что он определен как первичный ключ в миграции, таким образом автоматически увеличивается, так что он заполняет себя. Так что этого должно быть достаточно Grade::create('name' => '5 Kyu', 'order' => 2]);
  2. Миграция не определяет столбцы временной метки, но ваша модель имеет protected $timestamps = true;. Поэтому либо добавьте $table->timestamps() в вашу миграцию, либо установите $timestamps в false в вашей модели.

Я установил чистую Laravel копию и побежал миграции вас в курсе, создал модель и класс высева, и после фиксации вопросов, перечисленных выше, работает php artisan db:seed --class=GradeSeeder было сделано без каких-либо ошибок.

+0

mmm. Вы правы. Я добавил отметку времени, обновил db, добавил идентификатор в заполняемый ...и запустите его снова, он все равно не работает для меня :( –

+0

Вы говорите, что команда 'php artisan db: seed -class = GradeSeeder' возвращает код 255, но из моего опыта ремесленник обычно возвращает более подробную ошибку при сбое Не могли бы вы указать точный вывод команды? – Bogdan

+0

nop, no more:> php artisan db: seed --class = GradeSeeder Процесс завершен с кодом выхода 255 в 15:49:22 Время выполнения: 2,320 мс –