mar-gitacount
@mar-gitacount (mar mar)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

null許容したカラムが表示されない

解決したいこと

なぜか反映されないテーブルのカラム

発生している問題・エラー

既存のプロジェクトに新しいテーブルを作成し、php artisan migarate したのですが、カラムが現れません、、

null許容したカラム⇨my_replied_number

以下のテーブルに六つのカラムがあります。
2021_06_23_090903_create_article_comment_bulletion_boards_table.php


Schema::create('article_comment_bulletion_boards', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->char("handle_name");
            $table->text("article_comment");
            $table->bigInteger("my_replied_number")->nullable()->change();
            $table->foreignId('article_id')->constrained()->onDelite('cascade');
        });

上記をphpartisanmigrateしたところ、

Migrating: 2021_06_23_090903_create_article_comment_bulletion_boards_table
Migrated: 2021_06_23_090903_create_article_comment_bulletion_boards_table (63.13ms)

となって特にエラーも吐かれなかったのですが、php myAdminを確認するとフィールドが確認できません

スクリーンショット 2021-06-23 18.56.00.png

ユーザの挙動によって値をnullにしたり値を入れたりしたい任意のカラムなのですが、なぜ表示されないのでしょうか?
こういう仕様なのでしょうか?
ご教授いただければ幸いです。

0

2Answer

change()の利用方法として元々nullableでなかったカラムを後からチェンジするメソッドとという認識で間違いないのでしょうか??

単に「既存の列のタイプと属性を変更」するためのメソッドです。

そもそもカラムのフィールドを変更する際はロールバックしてマイグレーションすればchenge()は必要がないと思うのですが、、

開発中ならばそれで十分でしょう。
例えばすでにリリースされたテーブルに対して変更したい場合はどうでしょうか?

$table->bigInteger("my_replied_number")->default(null);をし,マイグレーションして
phpmyadminでテーブルをチェックしてみますと、defaoultの部分が「none」となっています。

カラムをnull許容にする方法は次のように例示されています。

For example, to make the column "nullable", you may use the nullable method:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::table('users', function (Blueprint $table) {
    $table->string('email')->nullable();
});

Column Modifiers

1Like

Comments

  1. @mar-gitacount

    Questioner

    ご丁寧にありがとうございます。では自分は開発中なのでchange()はなしという認識で作業をしたいと思います。
    ということはchange()を利用する際は、ロールバック等をしなくても、カラムをnull許容に変更できるという事ですね。ただ、上記で設定してもカラムのDefaultの値がNoneとなっていて、これは挙動としては正しいのでしょうか、、
Schema::create('article_comment_bulletion_boards', function (Blueprint $table) {
    $table->bigInteger("my_replied_number")->nullable()->change();
});

テーブル作成で、カラムを変更するためのchange()をしているのが気になります。
これが原因ということはないでしょうか?

The change method allows you to modify the type and attributes of existing columns.

Updating Column Attributes

0Like

Comments

  1. @mar-gitacount

    Questioner


    上記のサイトを見てみると(英語なのでわからないですが頑張ってみました)change()の利用方法として元々nullableでなかったカラムを後からチェンジするメソッドとという認識で間違いないのでしょうか??
    。そもそもカラムのフィールドを変更する際はロールバックしてマイグレーションすればchenge()は必要がないと思うのですが、、

    インターネッツで調べるとカラムにchange()を利用していたのが散見されたので脳死して使っていましたが、
    ロールバック後に
    $table->bigInteger("my_replied_number")->default(null);をし,マイグレーションして
    phpmyadminでテーブルをチェックしてみますと、defaoultの部分が「none」となっています。

Your answer might help someone💌