Sollte ich belongsTo oder hasOne in Laravel?
Betrachten zwei Modelle A
und B
A
-> relatedTo B
ist ein one to one
Beziehung
Was ist der Unterschied in der Verwendung von (Ein ->hasOne
-- B) und (A ->belongsTo
-- B)?
Kann ich benutze Sie austauschbar?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, der Unterschied hängt davon ab, wo Ihre Fremdschlüssel ist.
In deinem Beispiel, wenn
A
hat eineb_id
Spalte, dannA
belongsTo
B
.Wenn
B
hat einea_id
Spalte, dannA
hasOne
oderhasMany
B
je nachdem, wie vieleB
haben sollte.B
auchBelongTo
A
?A
hatb_id
Spalte. In diesem Fall, kann ichA.belongsTo(b)
oderB.hasOne(A)
. In beiden Fällen ORM hinzufügenb_id
zu denA
Tabelle. Also, was ist hier der Unterschied? Würden Sie bitte erklären?B
aber alles, was Sie haben, ist die id für eineA
, dann müssten Sie etwas tun, wieA::find($id)->B
welche verwenden würde, dassA.belongsTo(b)
Beziehung. Auf die inverse, wenn Sie brauchen, um die Abfrage für eineA
aber alles was Sie haben, ist die id für eineB
, dann müssten Sie dieB.hasOne(A)
BeziehungB::find($id)->A
.Hauptunterschied ist wie folgt:
belongsTo und belongsToMany du erzählst Laravel, dass diese Tabelle hält die foreign key -, dass es eine Verbindung zu der anderen Tabelle
hasOne und hasMany sagt Laravel, dass diese Tabelle nicht die foreign key -