php - Laravel Migration create foreign key using foreignIdFor with specific data type?

one text

So I've been trying to write a migration that creates a data table question_display_formats using tiny increments as you see below. And then, adding new Foreign Key column to existing questions table, trying to use the foreignIdFor method as a shortcut that'd look nice

    public function up()
    {
        Schema::create('question_display_formats', function (Blueprint $table) {
            $table->tinyIncrements('id');
            $table->string('format');
        });

        Schema::table('questions', function (Blueprint $table) {
            $table->foreignIdFor(QuestionDisplayFormat::class)
                ->nullable(true)
                ->after('question_type_id')
                ->constrained();
        });
    }

Turns out, this errors out with

General error: 1215 Cannot add foreign key constraint

Which turns out because the foreignIdFor users a different data type (confirmed by manually matching them and running the erroring out SQL alter table statement).

I googled, read and tried to adjust by doing: $table->mediumIncrements('question_display_format_id'); before the foreignIdFor line, which leads to error

SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'question_display_format_id' (SQL: alter table questions add question_display_format_id mediumint un signed not null auto_increment primary key, add question_display_format_id bigint unsigned null after question_type_id)

Is there a way to use foreignIdFor with the matching column size? or am I supposed to fall back on the classic way of first creating the column explicitly, then doing like $table->foreign('question_display_format_id')->references('id')->on('question_display_formats'); which I don't like because its very verbose and doesn't look good?

On the other hand, this is a one time used script.. lol would've been faster to just do it the old way! but I am curious to see how to do it right :)

Source