Ambos andam de mãos dadas. Um está completo sem o outro. Se você quer que suas relações funcionem corretamente, você precisa definir essas duas coisas.
Se você acabou de definir a chave estrangeira em um arquivo de migração, a relação funcionaria apenas no caso de você escrever uma consulta bruta. Não funcionará em seus modelos, pois você não escreveu nada sobre relações em seus modelos.
Então, assim que você escrever
hasMany
em um de seus modelos e a função correspondente no outro modelo, somente então seus modelos se conhecerão e você poderá consultar com sucesso as coisas por meio de seu modelo, bem como em seu banco de dados. Observe também que se você definiu corretamente as relações por meio de
hasMany
e belongsTo
em seus modelos, mas não forneceu a chave estrangeira na tabela do modelo que belongsTo
outra mesa, suas relações não funcionarão. Em suma, ambos são igualmente obrigatórios.