В чем разница между BelongsTo And HasOne в Laravel

Может ли любое тело сказать мне, в чем основное отличие между
отношения BelongsTo и HasOne в красноречиве.

Ответ 1

Относится к HasOne.

Мы можем определить обратное отношение hasOne, используя метод ownTo. Возьмите простой пример с моделями User и Phone.

Я даю отношение hasOne от пользователя к телефону.

class User extends Model
{
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

Используя это отношение, я могу получать данные модели телефона, используя модель пользователя.

Но это невозможно с обратным процессом, использующим HasOne. Как модель доступа пользователя, используя модель телефона.

Если я хочу получить доступ к модели пользователя с помощью телефона, необходимо добавить BelongsTo в модель телефона.

class Phone extends Model
{
    /**
     * Get the user that owns the phone.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

Вы можете обратиться к этой ссылке для более подробной информации.

Ответ 2

Основное различие заключается в том, какая сторона отношения содержит внешний ключ отношения. Модель, которая вызывает $this->belongsTo() является принадлежащей моделью в отношениях one-to-one и many-to-one и содержит ключ модели-владельца.

Пример отношения один-к-одному:

class User extends Model {
  public function car() {
    // user has at maximum one car, 
    // so $user->car will return a single model
    return $this->hasOne('Car');
  }
}

class Car extends Model {
  public function owner() {
    // cars table has owner_id field that stores id of related user model
    return $this->belongsTo('User'); 
  }
}

Пример отношения один ко многим:

class User extends Model {
  public function phoneNumbers() {
    // user can have multiple phone numbers, 
    // so $user->phoneNumbers will return a collection of models
    return $this->hasMany('PhoneNumber');
  }
}

class PhoneNumber extends Model {
  public function owner() {
    // phone_numbers table has owner_id field that stores id of related user model
    return $this->belongsTo('User'); 
  }
}

Ответ 3

Индивидуальные отношения: вы, как пользователь, можете иметь один (hasOne) профиль. И, конечно же, применяется обратное. Профиль (принадлежит) пользователю. Пользователь не может иметь более одного профиля, и профиль не может принадлежать нескольким пользователям.

Ответ 4

Если вы хотите установить отношение "один к одному" между двумя таблицами, то сначала вы должны установить отношение "hasOne", а если вы хотите установить обратное отношение к таблице, тогда вы сделаете "" Принадлежит "... Это простая разница между HasOne и Принадлежит к отношениям, если вы хотите узнать об этом One To Many (Inverse)
Теперь, когда мы можем получить доступ ко всем комментариям к записи, давайте определим отношение, чтобы позволить комментарию получить доступ к его родительскому сообщению. Чтобы определить обратное отношение hasMany, определите функцию отношения в дочерней модели, которая вызывает метод belongsTo:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    /**
     * Get the post that owns the comment.
     */
    public function post()
    {
        return $this->belongsTo('App\Post');
    }
}

Ответ 5

Здесь вы можете увидеть хороший пример и понять, в чем разница между отношениями BelongsTo и HasOne в eloquent.

Шпаргал по красноречивым отношениям Махмуда Зальта https://link.medium.com/9lj9BAG8lR