2012-12-28 97 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),然后运行您的作曲家功能。