Оба эти типа отношений, хотя и представляют сходные типы отношений, но имеют незначительные отличия друг от друга.
Как видно из документации здесь ,
Отношение hasMany обозначает соединение модели «один ко многим» с другой моделью посредством ссылочной целостности.Ссылочная целостность обеспечивается ограничением внешнего ключа на целевой модели, которое обычно ссылается на первичный ключ в исходной модели.Это отношение указывает, что каждый экземпляр декларирующей или исходной модели имеет ноль или более экземпляров целевой модели.Например, в приложении с клиентами и заказами у клиента может быть много заказов
Таким образом, в случае, когда вам нужно иметь отношение FK 1: n, вы будете использовать это.Но это будет использоваться, когда ФК находится на «одной» стороне.Это означает, что таблица customer (one) будет иметь столбец orders (many) в виде массива FK с таблицей Order.
Как видно из документации здесь ,
Отношение ownTo обозначает соединение модели «один к одному» с другой моделью посредством ссылочной целостности.Ссылочная целостность обеспечивается ограничением внешнего ключа в исходной модели, которое обычно ссылается на первичный ключ в целевой модели.Это отношение указывает, что каждый экземпляр декларирующей или исходной модели принадлежит ровно одному экземпляру целевой модели.Например, в приложении с клиентами и заказами заказ всегда принадлежит ровно одному клиенту
Итак, в случае, когда вам нужно иметь отношение FK 1: n, вы будете использовать это.Но это будет использоваться, когда ФК на стороне «многих».Это означает, что таблица Order (many) будет иметь столбец customer (один) как FK с таблицей Customer.Массив здесь не нужен.
В большинстве случаев вы будете использовать связи для таких случаев.Это работает практически во всех сценариях.Я не сталкивался с какими-либо конкретными случаями использования hasMany.