Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [ORM] HAS_MANY, MANY_MANY 
:(
    Опции темы
Sanchezzz
Дата 23.3.2013, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Добрый вечер. 
Правильно ли я понимаю что HAS_MANY, MANY_MANY используют отдельные запросами к БД для получения данных для связанных моделей,  в популярных ORM: Yii AR, kohana ORM.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aliance
Дата 25.3.2013, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



В Kohana да, отдельными.
PM MAIL WWW ICQ Skype   Вверх
georgiy11
Дата 31.3.2013, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Могут конструктором создаваться в join или подзапросами, этим регулируется флаг. Хотя возможно и создаются с помощью lazy_load, что более вероятней по дефолту, при запросе к связи происходит запрос к SQL.
Мвязи фактически используют ключ, как в YII, для префикса к алиасам при выборке, что бы можно было потом разобрать запрос на корректную структуру.
PM MAIL   Вверх
Sanchezzz
Дата 1.4.2013, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



В общем пока ехал в поезде без интернета было достойно времени покапатся в 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 





--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1041 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.