@Vasya90

Какая разница между связями belongsTo и hasOne?

Может кто объяснит простыми словами какая между ними разница. Без посылок в гугл и документацию.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
@jazzus
Разницу подскажет Ларавел если не прописывать ключевики. Можно прописать неверные ключевики в hasOne/belongsTo отношениях и будет все работать. Но отношения будут составлены неверно.

Есть 2 отличия.

Техническое

При user hasOne/hasMany phones Ларавел ожидает, что this id модели (User) будет равен user_id в Phone
При phone belongsTo user Ларавел ожидает что this user_id модели (Phone) будет равен id модели в User

Главный здесь юзер т.к. его ид есть в модели Phone, а phone_id в модели User нет. Поэтому User hasOne Phone, а Phone belongsTo User.

Логическое

Правильно: Юзер имеет один телефон. Юзер имеет много телефонов. Телефон принадлежит юзеру.
То что телефон имеет юзера это сейчас часто встречается, но логически неверно)

Короче. В user прописываем hasOne phone/hasMany phones. В Phone belongsTo user.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
hasOne — отношение один-к-одному

пример: у пользователя только один телефон и у телефона один владелец (пользователь)

belongsTo — это обратка один-ко-многим

Пример: у пользователя несколько телефонов, но у каждого телефона один владелец.
Значит отношение в модели User будет hasMany, а в Phone — belongsTo
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
08 мар. 2021, в 12:56
2000 руб./за проект
08 мар. 2021, в 12:35
50000 руб./за проект
08 мар. 2021, в 11:59
15000 руб./за проект