Когда я должен использовать hasOne () и когда я должен использовать ownTo ()? - PullRequest
0 голосов
/ 03 июля 2018

Я на самом деле запутался в использовании отношений hasOne() или belongsTo(). Предполагая, что отношение 1:1. Тогда какой?

  • Счет имеет одного клиента?
  • Счет принадлежит клиенту?

Заметил, что я реализовал и то, и другое, и они хорошо работают. Но что является стандартным? Когда я должен использовать какой?

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Зависит от того, какая таблица имеет внешний ключ.

Представьте себе отношения между человеком и машиной.

Владелец может владеть одним Автомобилем. Автомобиль может принадлежать одному владельцу.

Итак, у владельца есть одна машина, а машина принадлежит собственной. Итак, внешний ключ уйдет в «машину». Автомобиль должен знать, кому он принадлежит.

В вашем случае счет должен знать, кому он принадлежит, поэтому, если у клиента может быть много счетов, клиент hasMany(Invoice::class) и счета belongsTo(Customer::class).

0 голосов
/ 03 июля 2018

Если ваши две связанные таблицы / сущности имеют отношение как один к одному, они должны быть определены с использованием hasOne.

Если ваши 2 связанные таблицы / сущности имеют отношение «один ко многим», например, «А» имеет много «В», то «А» должен определять «В» как hasMany, а «В» должен определять «А» как belongsTo, который будет называться «Один к». Много (обратное)

Для вашего случая обе модели могут определять друг друга как hasOne, а обратная сторона модели должна определять собственную модель как belongsTo

  • Счет имеет одного клиента, клиент принадлежит к счету

  • У клиента есть один счет, счет принадлежит клиенту

В отношении «один-к-одному» таблица / объект, содержащий внешний ключ связанной таблицы / объекта, всегда является стороной-владельцем отношения, а другая будет обратной стороной отношения.

0 голосов
/ 03 июля 2018

вы можете использовать invice hasOne (покупатель), в вашем случае вы не можете использовать hasOne () с покупателем, потому что покупатель имеет много счетов, поэтому в тесте используйте hasOne () со счетом-фактурой и ownTo () с покупателем. Ex. модель счета hasOne (клиент)

в модели клиента belongsTo (счет-фактура)

0 голосов
/ 03 июля 2018

hasOne может использоваться в сильной модели или организации

belongsTo может использоваться в слабой модели или объекте.

Я уверен, что у вас есть представление о сильных и слабых сущностях в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...