it-swarm.com.ru

Laravel миграции: класс "не найден"

Я развертываю barebone-проект Laravel в Microsoft Azure, но всякий раз, когда я пытаюсь выполнить php artisan migrate, я получаю сообщение об ошибке:

[2015-06-13 14:34:05] production.ERROR: исключение 'Symfony\Component\Debug\Exception\FatalErrorException' с сообщением 'Class' 'не найдено' в D:\home\site\vendor\laravel\framework\SRC\Осветите\Database\Миграции\Migrator.php: 328

Трассировки стека:

 #0 {main}  

В чем может быть проблема? большое спасибо

-- Правка --

класс миграции

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

для пользователей автопогрузчика PSR-4 (composer.json):

Храните папку миграции внутри массива classmap и не включайте ее в объект psr-4 при автозагрузке. В качестве миграции основной класс Migrator не поддерживает пространство имен. Например;

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

Затем запустите:

php artisan clear-compiled 
composer dump-autoload
php artisan optimize
  • Первый очищает все скомпилированные файлы.
  • Второй обновляет autoload_psr4.php и почти очищает autoload_classmap.php.
  • Третий обновляет autoload_classmap.php.

С этого момента вам больше не придется делать это снова, и любые новые миграции будут работать правильно.

88
Umair Ahmed

Если вы получаете сообщение об ошибке "Class not found" при запуске миграции, попробуйте выполнить эту команду.

composer dump-autoload 

затем повторно введите команду migrate. Подробности смотрите на официальном сайте (#Running Migrations): http://laravel.com/docs/master/migrations#running-migrations

35
Jambor - MSFT

Просто убедитесь, что имя вашего файла миграции совпадает с именем вашего класса.

то есть:

Если имя файла:

xxx_151955_create_post_translations_table.php

Тогда класс должен быть:

CreatePostTranslationsTable

12
Mohammad Kawsara

У меня была такая же проблема некоторое время назад. Видимо, это общая проблема, потому что в документации для Laravel она даже предлагает это: http://laravel.com/docs/master/migrations#running-migrations

По сути, все, что вам нужно сделать, это обновить некоторые файлы composer. Просто запустите:

composer dump-autoload

Это обновит composer файлы автозагрузки, а затем вы сможете запустить обычную миграцию, и она должна работать! Самый лучший.

11
jacurtis

я тоже бегаю в той же проблеме.

Решением для меня было удалить файл миграции и удалить запись из таблицы "миграций" в базе данных.

После этого я побежал

композитор дамп-автозагрузка

и наконец смог сбросить/откат миграции.

8
Al Masum Fahim

Я удалил один из файлов миграции. столкнулся с той же проблемой, в то время как php artisan migrate:rollback

Затем я попробовал composer dump-autoload. Опять то же самое подвернулось.

Я восстановил удаленный файл и попробовал composer dump-autoload и php artisan migrate:rollback. Оно работает.

6
m2j

У меня была похожая ситуация (ошибка класса не найдена) после переноса проекта разработчика Laravel 5.2. Производственный сервер искал класс "проект", но контроллером было имя Project.php. Как только я переименовал файл в project.php, это было хорошо.

3
mediaguru

Для меня проблема состояла в том, что я назвал свою миграцию 2017_12_15_012645_create_modules_problems.php с именем класса CreateModulesProblemsTable. Как только я добавил _table к имени файла, все работало нормально.

3
Matthew Park

Я глупо положил:

namespace database\migrations;

Внутри моей миграции create_users_table.php [2014_10_12_000000_create_users_table.php]

Я получил похожую ошибку - класс 'CreateUsersTable' не найден.

Удаление этой строки вверху решило эту ошибку.

2
Joshua

Я думаю, что уже поздно отвечать на этот вопрос, но, возможно, это кому-то поможет.

Если вы изменили имя файла миграции, убедитесь в его внутреннем имени класса.

Например, если я изменю имя миграции с 2018_06_10_079999_create_admins_table.php на 2018_06_10_079999_create_managers_table.php, то его внутреннее имя класса также должно измениться с CreateAdminsTable на CreateManagerTable.

2
Behnam Azimi

Я получаю сообщение об ошибке "тот же класс не найден" при попытке перенести проект. Иногда это простые вещи, которые получают вас. В моем случае я заметил, что имя моего класса было неверным в моем файле миграции из-за того, что я рано сделал изменение переименования и не несу это изменение повсюду.

После исправления имени класса я выполнил composer dump-autoload, и моя проблема исчезла.

HTH кто-то:]

2
Stu

просто удалите строку в вашей базе данных в таблице migrations, и это решит проблему. Это больше не будет отображаться при выполнении миграций

другой способ - просто создать файл, это зависит от того, что вы хотите, в моем случае я хотел избавиться от этой миграции. :)

1
Dimitar