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

    @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 комментарий