[ORM] HAS_MANY, MANY_MANY

 
0
 
PHP
ava
Sanchezzz | 23.03.2013, 21:33
Добрый вечер.
Правильно ли я понимаю что HAS_MANY, MANY_MANY используют отдельные запросами к БД для получения данных для связанных моделей,  в популярных ORM: Yii AR, kohana ORM.
Comments (3)
ava
Aliance | 25.03.2013, 10:46 #
В Kohana да, отдельными.
ava
georgiy11 | 31.03.2013, 00:19 #
Могут конструктором создаваться в join или подзапросами, этим регулируется флаг. Хотя возможно и создаются с помощью lazy_load, что более вероятней по дефолту, при запросе к связи происходит запрос к SQL.
Мвязи фактически используют ключ, как в YII, для префикса к алиасам при выборке, что бы можно было потом разобрать запрос на корректную структуру.
ava
Sanchezzz | 01.04.2013, 20:18 #
В общем пока ехал в поезде без интернета было достойно времени покапатся в Yii  AR модели + связью с ней моделью количеством 5 штук.

По умолчанию для HAS_MANY, HAS_ONE используется LEFT OUTER JOIN,  а может и для всех видов связи, не было желания дальше это выеснять.
Результат запроса со связанными моделями HAS_MANY с LEFT OUTER JOIN Приходят вот в таком виде

m1_id | m1_name |  m2_id  | m2_name | m2_fk |
   1          Вася           2             Маша          1
   2          Вася           3             Оляга          1
   3          Саша         4             Света          3

Потом это все с пивом и водкой перекручивается и запихивается в модели и в массивик и отдается как результат.

Я пошел почти тем же путем  что и YII только я использую LEFT OUTER JOIN  только для связей HAS_ONE
HAS_MANY сделал путем получения всех PK из первого результата и дополнительного поиска по PK указанного в relation
В принципе получилось довольно шустро и компактно.  Сохранение моделей работает как В YII+WithRelatedBehavior, что бы не мучатся.


Кстати с праздником  smile 


Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit