Model::find
использует объединения для извлечения записей модели, связанных с исходной моделью с помощью отношений hasOne
и belongsTo
. Определенные SQL-запросы выглядят примерно так (с использованием Car belongsTo Driver
структуры модели):
SELECT `Car`.`brand`, `Car`.`colour`, `Driver`.`name`, `Driver`.`age`
FROM `cars` AS `Car`
LEFT JOIN `drivers` AS `Driver` ON `Car`.`id` = `Driver`.`car_id`
WHERE `Car`.`brand` = 'Aston Martin'
Поля, принадлежащие каждой модели, могут быть разбиты на соответствующие элементы массива по псевдониму таблицы / модели:
Car.brand
становится $result['Car']['brand']
Car.colour
становится $result['Car']['colour']
Driver.name
становится $result['Driver']['name']
Driver.age
становится $result['Driver']['age']
Требуется только один запрос.
Получение данных для ассоциаций hasMany
и hasAndBelongsToMany
требует дополнительных запросов, а иногда и многих других.