переименовать столбец в laravel, используя миграцию - PullRequest
0 голосов
/ 02 июля 2018

Я использую Laravel 5.6

Я хочу изменить author_ID на user_id

У меня есть столбцы, как указано ниже:

class CreatePostsTable extends Migration{

    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->bigInteger('author_ID');
            $table->bigInteger('category_ID')->nullable();
            $table->longText('post_content');
            $table->text('post_title');
            $table->string('post_slug', 200);
            $table->string('post_type', 20);
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

Я использую ссылку ниже, чтобы изменить имя моего столбца:

Как переименовать столбец в laravel, используя миграцию?

затем создайте миграцию удара:

php artisan make:migration rename_author_id_in_post_table

переименовать файл миграции:

class UpdateUsernameInPostTable extends Migration{

    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->renameColumn('author_ID', 'user_id');
        });

    }

    public function down()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->renameColumn('user_id', 'author_ID');
        });
    }
}

но с командой запуска: php artisan migrate у меня ниже ошибка:

Symfony\Component\Debug\Exception\FatalThrowableError  : 
Class 'RenameAuthorIdInPostTable' not found

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

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

php artisan make:migration rename_author_id_in_posts_table --table=posts

Это создаст одну миграцию, а затем заменит функции up () и down () этим в этой созданной миграции,

public function up()
{
    Schema::table('posts', function (Blueprint $table) {
        $table->renameColumn('author_ID', 'user_id');
    });
}

И функция down () с этим,

public function down()
{
    Schema::table('posts', function (Blueprint $table) {
        $table->renameColumn('user_id', 'author_ID');
    });
}

Для получения дополнительной информации о миграции вы можете перейти по этой ссылке Laravel Migrations .

Надеюсь, это сработает для вас. Если есть сомнения, пожалуйста, прокомментируйте.

ПРОБЛЕМА С ВАШЕЙ МИГРАЦИЕЙ:

Вы используете метод Schema::create() для изменения таблицы, так как вы уже создали миграцию для таблицы сообщений, вам не нужно делать Schema::create(), просто используйте метод Schema::table() для обновления и изменения в любых полях.

Schema::create('posts', function (Blueprint $table) {
        $table->renameColumn('author_ID', 'user_id');
    });
0 голосов
/ 02 июля 2018

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

Переименуйте свой класс UpdateUsernameInPostTable в RenameAuthorIdInPostTable, и он должен работать.

Если этого не произойдет, запустите composer dumpauto, чтобы перезагрузить файл автозагрузки, и он точно будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...