Kann mir jeder Körper sagen, worin der Hauptunterschied besteht
die BelongsTo und HasOne Beziehung in eloquent .
BelongsTo ist eine Umkehrung von HasOne.
Wir können die Umkehrung einer hasOne-Beziehung mit der Methode "tooTo" .. definieren. Nehmen Sie ein einfaches Beispiel mit den Modellen
User
undPhone
.
Ich gebe hasOne Beziehung von Benutzer zu Telefon.
class User extends Model
{
/**
* Get the phone record associated with the user.
*/
public function phone()
{
return $this->hasOne('App\Phone');
}
}
Mit dieser Beziehung kann ich unter Verwendung des Benutzermodells Daten zum Telefonmodell abrufen.
Bei inversen Prozessen mit HasOne ist dies jedoch nicht möglich. Wie Access-Benutzermodell mit Telefonmodell.
Wenn ich mit Phone auf das Benutzermodell zugreifen möchte, müssen Sie im Telefonmodell BelongsTo hinzufügen.
class Phone extends Model
{
/**
* Get the user that owns the phone.
*/
public function user()
{
return $this->belongsTo('App\User');
}
}
Sie können diesen Link für weitere Details verweisen.
Der Hauptunterschied besteht darin, welche Seite der Beziehung den Fremdschlüssel der Beziehung enthält. Das Modell, das $ this-> goesTo () aufruft, ist das Besitzmodell in den Beziehungen one-to-one und many-to-one und enthält den Schlüssel des Besitzermodells.
Beispiel Eins-zu-Eins-Beziehung:
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');
}
}
Beispiel one-to-many Beziehung:
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');
}
}
Eins-zu-Eins-Beziehung: Sie können als Benutzer ein ( hasOne ) Profil haben. Und natürlich gilt auch die Umkehrung. Profil ( GehörtTo ) einen Benutzer. Ein Benutzer kann nicht mehr als ein Profil haben und ein Profil kann nicht mehreren Benutzern angehören.
Wenn Sie eine 1: 1-Beziehung zwischen zwei Tabellen herstellen möchten, müssen Sie zuerst eine "hasOne" -Relation erstellen. Wenn Sie eine inverse Tabellenbeziehung herstellen möchten, müssen Sie "Gehört zu" erstellen. Es ist ein einfacher Unterschied zwischen HasOne und Gehört zu der Beziehung, wenn Sie über diese One To Many (Inverse) wissen wollen
Nachdem wir nun auf alle Kommentare eines Posts zugreifen können, definieren wir eine Beziehung, damit ein Kommentar auf den übergeordneten Post zugreifen kann. Um die Inverse einer hasMany-Beziehung zu definieren, definieren Sie eine Beziehungsfunktion im untergeordneten Modell, die die belongsTo
-Methode aufruft:
<?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');
}
}
Hier können Sie ein gutes Beispiel sehen und sehen, was zwischen BelongsTo und HasOne in eloquent der Unterschied ist.
Eloquent Relationships Spickzettel von Mahmoud Zalthttps://link.medium.com/9lj9BAG8lR