Oba idą w parze. Jedno jest niekompletne bez drugiego. Jeśli chcesz, aby twoje relacje działały prawidłowo, musisz zdefiniować obie te rzeczy.
Jeśli właśnie zdefiniowałeś klucz obcy w pliku migracji, relacja zadziałałaby na wypadek, gdybyś napisał nieprzetworzone zapytanie. Nie będzie działać na twoich modelach, ponieważ nie napisałeś nic o relacjach w swoich modelach.
Tak więc, gdy tylko napiszesz hasMany
w jednym z modeli i odpowiadającej im funkcji w drugim modelu, tylko wtedy modele wiedzą o sobie nawzajem, a następnie możesz pomyślnie wysyłać zapytania za pośrednictwem swojego modelu, a także bazy danych.
Zauważ też, że jeśli masz poprawnie zdefiniowane relacje za pomocą hasMany
i belongsTo
w swoich modelach, ale nie podałeś klucza obcego w tabeli modelu, który belongsTo
inny stół, twoje relacje nie będą działać.
Krótko mówiąc, oba są równie obowiązkowe.