Я для себя написал, с join-ами нормально работает. Не так сложно на самом делеАвтор оригинала: triumvirat
Суть моего поста - понять, насколько нужно далеко можно и нужно заходить с ORM
Тогда идем дальше и спрашиваем, зачем нам ORM, если QueryBuilder в нем тупой, а мы пользуемся только побочными свойствами враперов? Не проще ли обернуть наши 5-7 запросов в нативные классы, разработанные специально для данной конретной модели данных и ну его нафиг совсем бесполезный QueryBuilder. Или я что-то пропустил?AmdY: угу, я к этому и веду, ORM не тупой QueryBuilder, который зачастую мешает. В той же доктрине есть возможность строить произвольный запрос, но указать врапер для возвращаемых данных.
Т.е была проблема - на основании сложного SQL, использующего JOIN, создать объекты моделей. Решаем элементарно: на основании результата создаем объекты моделей, имя информацию о таблицах. Т.е. почти тоже самое, что и mysql_fetch_row, только объектного содержания:у тебя есть результат запроса. Из него можно получить список полей и таблиц (многие db-клиенты позволяют это). Если у тебя одной таблице соответствует один объект, то написать реализацию - не проблема
Array
(
[0] => Array
(
[advert] => Model_Advert Object
(
[data:protected] => Array
(
[id] => 119
[header] => Комната в 2-к квартире
....
)
)
[country] => Model_Country Object
(
[data:protected] => Array
(
[id] => 3
[name_ru] => Абхазия
....
)
)
[region] => Model_Region Object
(
[data:protected] => Array
(
[id] => 105
[name_ru] => Абхазия
....
)
)
[city] => Model_City Object
(
[data:protected] => Array
(
[id] => 3299
[name_ru] => Авадхара
....
)
)
)
)
а разве они должны возвращать объект ActiveRecord?возвращают не объект ActiveRecord
замечательно, но я все больше и больше абстрагируюсь от сырых данных и всё больше и больше склоняюсь к использованию объектов-сущностей. Т.е. если надо нам сделать SQL-запрос, то метод модели, выполяняющий этот запрос, должен возвращать не сырые данные - результат mysql_fetch_*, а объектное представление этих данных.а объект SQL-запроса, с которым можно еще пошаманить
Ну, а я использую PDO и PDOStatement, которому указываю нужный мне режим "прокрутки" результатов.метод модели, выполяняющий этот запрос, должен возвращать не сырые данные - результат mysql_fetch_*, а объектное представление этих данных.