Washery Washery - 7 months ago 33
PHP Question

Laravel migrations: Class "not found"

I am deploying a Laravel barebone project to Microsoft Azure, but whenever I try to execute

php artisan migrate
I get the error:


[2015-06-13 14:34:05] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Class '' not found' in D:\home\site\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php:328


Stack trace:

#0 {main}


What could be the problem? Thank you very much

-- edit --



Migration Class

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->bigIncrements('id');
$table->string('name', 50);
$table->string('surname', 50);
$table->bigInteger('telephone');
$table->string('email', 50)->unique();
$table->string('username', 50)->unique();
$table->string('password', 50);
$table->boolean('active')->default(FALSE);
$table->string('email_confirmation_code', 6);
$table->enum('notify', ['y', 'n'])->default('y');
$table->rememberToken();
$table->timestamps();

$table->index('username');
});
}

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

Answer

For PSR-4 Auto Loader Users (composer.json):

Keep the migrations folder inside classmap array and do not include it inside psr-4 object under autoload. As migrations main class Migrator doesn't support namespacing. For example;

"autoload": {
    "classmap": [
        "app/database/migrations"
    ],
    "psr-4": {
        "Acme\\controllers\\": "app/controllers"
    }
}

Then run:

php artisan clear-compiled 
composer dump-autoload
php artisan optimize
  • First one clears all compiled files.
  • Second updates the autoload_psr4.php and almost empties the autoload_classmap.php.
  • Third one updates the autoload_classmap.php.

From this time onwards, you will not have to do this again and any new migrations will work correctly.

Comments