2012-12-28 96 views
25

這個問題現在已經解決了 - 我用下面的:Laravel 4遷移 - 類未找到

而且,問題就解決了由於IRC。我被告知要運行

php composer.phar dump-autoload 

這解決了我的問題。這可能與我奇怪的Composer設置有關。

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

此:


我剛開始用Laravel 4打了一個可能的未來的項目中,已經進入從Laravel 3.我已經通過創建一個新的遷移,create_blogs_table使用工匠開始了生成的基本遷移的文件結構,然後我填寫了一點:

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

我現在嘗試再次使用人員能夠運行這個遷移:

php artisan migrate --env=local 

*注意我有一個本地數據庫連接設置爲與.dev擴展域

以前,這會工作得很好(在Laravel 3),但照亮我再收到此錯誤:

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 

我檢查過,數據庫/ migrations /文件夾肯定是自動加載的。我不知道這個問題的原因可能是什麼。詢問了IRC並使用Google搜索後,我仍然完全無能爲力,希望有人能幫助我。

在此先感謝!

回答

16

在Laravel 4(照亮)遷移類中不需要您設置未簽名的方法。你可以試試這個。

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'); 
    } 
} 

跟你聊天后,我知道兩個問題,一個是上面已經提到,另一個問題是由於沒有被註冊到作曲家自動加載的類。你將不得不手動運行:PHP composer.phar轉儲自動加載

+2

剛剛嘗試過,仍然沒有運氣。我仍然得到類未找到錯誤。 – euantorano

+0

我剛剛更新了答案。 – Raftalks

+14

也有同樣的問題,運行'php composer.phar dump-autoload'工作。 – Rob

28

我對Xubuntu的這個錯誤,使用sudo作曲家轉儲自動加載固定它

+4

是的,我的工作! – Ortix92

15

工匠做同樣的工作:

php artisan dump-autoload 

只是提醒那些不熟悉composer的人。

+0

這實際上比使用composer更好,因爲它會生成一個優化的類圖 – developerbmw

+0

其實這個命令對我來說不存在,但'composer dump-autoload'解決了這個問題。謝謝!對於這個想法,至少。 – IIllIIll

+0

那些誰搜索的問題,請注意,這個問題是3年前,laravel的版本是4.而軟件本身正在不斷變化。這意味着,**這個命令在最新的技工**中不存在。謝謝。 – Yarco

-1

更新您的作曲家(composer self-update),然後運行您的作曲家功能。