Подтвердить что ты не робот

Переходы Laravel: класс "не найден"

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

[2015-06-13 14:34:05] production.ERROR: исключение 'Symfony\Component\Debug\Exception\FatalErrorException' с сообщением 'Class' 'not found' в D:\home\site\vendor\Laravel\рамки\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');
    }
}
4b9b3361

Ответ 1

Для пользователей автозагрузчика 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.

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

Ответ 2

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

composer dump-autoload 

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

Ответ 3

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

то есть:

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

xxx_151955_create_post_translations_table.php

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

CreatePostTranslationsTable

Ответ 4

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

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

composer dump-autoload

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

Ответ 5

Я также запускаю ту же проблему.

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

После этого я запустил

композитор dump-autoload

и, наконец, смог выполнить миграции reset/rollback.

Ответ 6

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

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

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

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

HTH кто-то:]

Ответ 11

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

namespace database\migrations;

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

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

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

Ответ 12

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

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

Ответ 13

В моем случае было автоматическое увеличение базы данных. В прошлом я вручную удалял одну запись, а AUTO_INCREMENT указывал на один больше, чем следующий идентификатор в таблице.

По-видимому, Laravel использует AUTO_INCREMENT -1, чтобы узнать, какая была последняя миграция.

Ответ 14

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

C:\xampp\htdocs\StuffSpot\vendor\composer\autoload_classmap.php C:\xampp\htdocs\StuffSpot\vendor\composer\autoload_static.php

Ответ 15

я сталкиваюсь с этой проблемой, когда переименовываю миграции в:

0_create_activities_table.php

я решаю это, когда переименую в:

2019_10_01_0_create_activities_table.php