(PRIMARY_KEY), login, ts, etc...
customers_statements: login (PRIMARY_KEY), statement
Они связываются по колонке 'login', связь один ко одному. В customers_statements 'login' также является PRIMARY_KEY, это переопределено в его Eloquent модели в переменной $primaryKey.
Как их связать между собой при помощи hasOne()? Вот такая связи в модели Customer возвращает null:
public function statement()
{
return $this->hasOne(CustomersStatements::class, 'login', 'login');
}
Если в CustomersStatements убрать переопределение $primaryKey, всё работает прекрасно.
Собственно, ответ на мой вопрос уже есть: https://stackoverflow.com/a/69739481/16510549 , но, если честно, не очень им удовлетворён. Хочется другого решения, которое не потребует изменения структуры табличек.
Нормализовать структуру табличек пока что не вариант.
Если версия >=5.7, то инфы достаточно много, mysql virtual generated columns. Насчёт производительности - не должно сказаться, это по сути такая же колонка как и обычные, просто содержит некоторое вычисленное значение, можно повесить индексы, возможно только первое создание колонки будет долгим
Посмотрю, спасибо.
Обсуждают сегодня