| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > [ORM] HAS_MANY, MANY_MANY |
| Автор: Sanchezzz 23.3.2013, 20:33 |
| Добрый вечер. Правильно ли я понимаю что HAS_MANY, MANY_MANY используют отдельные запросами к БД для получения данных для связанных моделей, в популярных ORM: Yii AR, kohana ORM. |
| Автор: Aliance 25.3.2013, 10:46 |
| В Kohana да, отдельными. |
| Автор: georgiy11 31.3.2013, 00:19 |
| Могут конструктором создаваться в join или подзапросами, этим регулируется флаг. Хотя возможно и создаются с помощью lazy_load, что более вероятней по дефолту, при запросе к связи происходит запрос к SQL. Мвязи фактически используют ключ, как в YII, для префикса к алиасам при выборке, что бы можно было потом разобрать запрос на корректную структуру. |
| Автор: Sanchezzz 1.4.2013, 20:18 | ||
| В общем пока ехал в поезде без интернета было достойно времени покапатся в Yii AR модели + связью с ней моделью количеством 5 штук. По умолчанию для HAS_MANY, HAS_ONE используется LEFT OUTER JOIN, а может и для всех видов связи, не было желания дальше это выеснять. Результат запроса со связанными моделями HAS_MANY с LEFT OUTER JOIN Приходят вот в таком виде
Потом это все с пивом и водкой перекручивается и запихивается в модели и в массивик и отдается как результат. Я пошел почти тем же путем что и YII только я использую LEFT OUTER JOIN только для связей HAS_ONE HAS_MANY сделал путем получения всех PK из первого результата и дополнительного поиска по PK указанного в relation В принципе получилось довольно шустро и компактно. Сохранение моделей работает как В YII+WithRelatedBehavior, что бы не мучатся. Кстати с праздником |