Миграция в Laravel. Как сделать столбец внешним ключом на разные таблицы в зависимости от другого столбца?
Имеется таблица
$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);
}
}
Источник: Stack Overflow на русском