Laravel использует соглашение, которое, при понимании, может помочь прояснить вашу структуру:
имеет X отношения (hasOne
, hasMany
, hasManyThrough
и т. Д.) Означаютвнешний ключ находится в отношении дочерний / внешний .
A User
имеет один Phone
.Таблица пользователя не знает телефона.Таблица Телефон имеет столбец user_id
.
отношение отношение "* " означает, что таблица current имеет внешний ключ, ссылающийся на другую таблицу.
A Phone
принадлежит User
.
Ваш код модели «Сомнение 1» будет хорошо работать, и это то, что я бы предложил использовать.Вы бы поместили registration_id
внешний ключ в вашу таблицу payments
.Это гарантирует, что Платеж всегда ссылается на определенную Регистрацию (без лишних платежей, за которые вы не уверены, для чего), и поскольку у Регистрации может даже не быть платежа, у вас не останется пустое значение, которым вы не являетесь.конечно верно.
Что касается «Сомнения 2» и Референций, это зависит от того, ™ ️ если Ссылка всегда уникальна для Платежа, или если одна Ссылка может использоваться для нескольких платежей.
ЕслиКаждый платеж будет иметь уникальную ссылку, которая будет использоваться только один раз, после чего могут применяться те же отношения.payment_id
внешний ключ будет добавлен к Справочной таблице / модели, Платеж имеет одну Ссылку, и Ссылка принадлежит Платежу.
Если Ссылка может быть применена к нескольким Платежам, тогда таблица payments
будетнужен столбец reference_id
.Оплата принадлежит Ссылке, и Ссылка имеет много Платежей.
Надеюсь, это поможет!Удачного программирования.:)