Может ли любое тело сказать мне, в чем основное отличие между
отношения BelongsTo и HasOne в красноречиве.
В чем разница между BelongsTo And HasOne в Laravel
Ответ 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