Миграция в Laravel. Как сделать столбец внешним ключом на разные таблицы в зависимости от другого столбца?

Рейтинг: 0Ответов: 0Опубликовано: 11.01.2023

Имеется таблица

$table->bigIncrements('id');
$table->integer('type');
$table->foreignId('model_id')->constrained(??);

Хочется, что бы в зависимости от значения поля type была связь с разными таблицами. Например, если type = 1, то ->constrained(Table1). Если type = 2, то ->constrained(Table2). Возможно ли провернуть такой трюк?

Логика подсказывает, что можно создать просто

$table->integer('model_id')

И устанавливать связь уже через отношения, правда не совсем очевидно как это реализовать отношение одно, а таблицы разные

class Table_full extends Model
{
    function table1()
    {    
         $this->hasMany(?)->where('Table_full.type', ?);
    }
}

class Table1 extends Eloquent
{
    function TableFull()
    {    
         $this->belongsTo('Table_full')->where('Table_full.type', 1);
    }
}

Ответы

Ответов пока нет.