2012-12-28 9 views
25

Diese Frage ist jetzt gelöst gefunden - ich die folgenden verwendet:Laravel 4 Migrationen - Klasse nicht

Und Problem gelöst dank IRC. Ich wurde aufgefordert,

php composer.phar dump-autoload 

Dies behebt das Problem für mich. Es hängt wahrscheinlich mit meinem seltsamen Composer-Setup zusammen.

php artisan migrate:make create_blogs_table --table=blogs --create 

Dieses:


Ich habe gerade angefangen mit Laravel 4 für eine mögliche zukünftige Projekt spielen, von Laravel gekommen 3. Ich habe durch die Schaffung einer neuen Migration, create_blogs_table mit Handwerker begann die grundlegende Migration Dateistruktur erzeugt, die ich ausgefüllt dann ein wenig mehr:

<?php 

use Illuminate\Database\Migrations\Migration; 

class CreateBlogsTable extends Migration 
{ 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('blogs', function($table) 
     { 
      $table->increments('id'); 
      $table->string('title'); 
      $table->text('description')->nullable(); 
      $table->integer('user_id')->unsigned(); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('blogs'); 
    } 
} 

ich versuche nun, diese Migration mit handgeschöpftem erneut auszuführen:

php artisan migrate --env=local 

* bemerke ich eine lokale Datenbankverbindung für Domains mit der .dev Erweiterung

Früher wäre dies gut funktionieren (in Laravel 3), aber mit Illuminate einrichten erhalte ich dann diesen Fehler:

PHP Fatal error: Class 'CreateBlogsTable' not found in /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php on line 301 
PHP Stack trace: 
PHP 1. {main}() /var/www/gamingsite/artisan:0 
PHP 2. Symfony\Component\Console\Application->run() /var/www/gamingsite/artisan:57 
PHP 3. Symfony\Component\Console\Application->doRun() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Application.php:106 
PHP 4. Illuminate\Console\Command->run() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Application.php:193 
PHP 5. Symfony\Component\Console\Command\Command->run() /var/www/gamingsite/vendor/illuminate/console/src/Illuminate/Console/Command.php:95 
PHP 6. Illuminate\Console\Command->execute() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:240 
PHP 7. Illuminate\Database\Console\Migrations\MigrateCommand->fire() /var/www/gamingsite/vendor/illuminate/console/src/Illuminate/Console/Command.php:107 
PHP 8. Illuminate\Database\Migrations\Migrator->run() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:69 
PHP 9. Illuminate\Database\Migrations\Migrator->runMigrationList() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:75 
PHP 10. Illuminate\Database\Migrations\Migrator->runUp() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:106 
PHP 11. Illuminate\Database\Migrations\Migrator->resolve() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:125 
PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/var/www/gamingsite/app/start/../storage/logs/log-2012-12-28.txt" could not be opened: failed to open stream: Permission denied' in /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:71 
Stack trace: 
#0 /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(77): Monolog\Handler\StreamHandler->write(Array) 
#1 /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\Handler\RotatingFileHandler->write(Array) 
#2 /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Logger.php(214): Monolog\Handler\AbstractProcessingHandler->handle(Array) 
#3 /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Logger.php(278): Monolog\Logger->addRecord(400, Object(Symfony\Component\HttpKernel\Exception\FatalErrorException), Array) 
#4 [internal function]: Monolog\Logger->addError(Object(Symfony\Component\HttpKernel\Exception\FatalErrorExcepti in /var/www/gamingsite/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 71 
PHP Stack trace: 
PHP 1. {main}() /var/www/gamingsite/artisan:0 
PHP 2. Symfony\Component\Console\Application->run() /var/www/gamingsite/artisan:57 
PHP 3. Symfony\Component\Console\Application->doRun() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Application.php:106 
PHP 4. Illuminate\Console\Command->run() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Application.php:193 
PHP 5. Symfony\Component\Console\Command\Command->run() /var/www/gamingsite/vendor/illuminate/console/src/Illuminate/Console/Command.php:95 
PHP 6. Illuminate\Console\Command->execute() /var/www/gamingsite/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:240 
PHP 7. Illuminate\Database\Console\Migrations\MigrateCommand->fire() /var/www/gamingsite/vendor/illuminate/console/src/Illuminate/Console/Command.php:107 
PHP 8. Illuminate\Database\Migrations\Migrator->run() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Console/Migrations/MigrateCommand.php:69 
PHP 9. Illuminate\Database\Migrations\Migrator->runMigrationList() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:75 
PHP 10. Illuminate\Database\Migrations\Migrator->runUp() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:106 
PHP 11. Illuminate\Database\Migrations\Migrator->resolve() /var/www/gamingsite/vendor/illuminate/database/src/Illuminate/Database/Migrations/Migrator.php:125 

Ich habe überprüft und die Datenbank/Migrationen/Ordner wird sicherlich automatisch geladen. Ich habe keine Ahnung, was die Ursache für dieses Problem sein könnte. Nachdem ich im IRC gefragt und gegoogelt habe, bin ich immer noch völlig ahnungslos, also kann mir hoffentlich jemand hier helfen.

Vielen Dank im Voraus!

Antwort

16

In Laravel 4 (illuminate) Migrationsklasse müssen Sie nicht vorzeichenlose Methode festlegen. Du kannst es versuchen.

class CreateBlogsTable extends Migration 
{ 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('blogs', function($table) 
     { 
      $table->increments('id'); 
      $table->string('title'); 
      $table->text('description')->nullable(); 
      $table->integer('user_id'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('blogs'); 
    } 
} 

Nach dem Gespräch mit Ihnen haben, wusste ich zwei Probleme, ist eine, die bereits oben erwähnt und das andere Problem ist die Klasse aufgrund nicht in Komponisten automatisch geladen registriert. Sie werden manuell ausführen müssen: php composer.phar Dump-Autoload

+2

Ich habe das gerade versucht und immer noch kein Glück. Ich bekomme immer noch den Fehler Klasse nicht gefunden. – euantorano

+0

Ich habe gerade die Antwort aktualisiert. – Raftalks

+14

hatte das gleiche Problem, ausgeführt 'php composer.phar dump-autoload' gearbeitet. – Rob

28

Ich hatte diesen Fehler auf xubuntu und fixiert es mit sudo Komponist Dump-Autoload

+4

Ja, das hat für mich funktioniert! – Ortix92

15

Artisan die gleiche Arbeit:

php artisan dump-autoload 

Nur eine Erinnerung für diejenigen, die nicht mit composer vertraut sind.

+0

Das ist eigentlich besser als mit Composer, da es eine optimierte Klassenmap erzeugt – developerbmw

+0

Eigentlich existierte dieser Befehl nicht für mich, aber 'composer dump-autoload' löste das Problem. Vielen Dank! Zumindest für die Idee. – IIllIIll

+0

Diejenigen, die das Problem suchen, haben bemerkt, dass diese Frage vor 3 Jahren und die Version von Laravel 4 ist. Und die Software selbst ändert sich ständig. Es bedeutet, ** dieser Befehl existiert nicht in der neuesten Handwerker **. Vielen Dank. – Yarco

-1

Aktualisieren Sie Ihren Composer (composer self-update), und führen Sie dann die Composer-Funktionen aus.