Когда использовать ORM фреймворки?

caballero

Новичок
Кстати не стоит забывать еще и про lazyLoad связанных таблиц
не понял какие действия следуют из не забывания но здесь есть тонкий момент

когда ты выбираешь один объект то это полезно - обратился к свойству - пошло обращение к БД.
А если ты выгреб несколько объектоа или несколько десятков? столько же обращений
сколько строк в таблице которую надо показать? тут уже лучше выбирать сразу все группировками.
Вопрос кто будет решать кода юзать lazyLoad когда нет? ну типа класическая задача - три камня это
уже куча или еще нет
не говоря о том что это уже выборки по разному и в зависимости от параметровв может вернутся одна
запись а может стопицрот
 

caballero

Новичок
Таких классов-сервисов "без сущности" в любом проекте полно.
разумеется.
иногда делаются классы с чисто статическими функциями просто чтобы автолоад заюзать.
просто тут уповали на красоту и гармоничность ООП проекта с ORM во главе. Я и пытался показать что до красоты и гармоничности тут далековато а отсюда вывод - оправдано ли юзать громоздкую прослойку с необходимостью ручного маппинга и малочитабельным кодом или достаточно ограничится AR для рутинных DML операций
 

Redjik

Джедай-мастер
caballero

ну как бы в yii решить нужен тебе lazyLoad или нет, дело одного параметра в массиве.
как и везде я полагаю.

Это уж высосано из пальца.
когда ты выбираешь один объект то это полезно - обратился к свойству - пошло обращение к БД.
А если ты выгреб несколько объектоа или несколько десятков? столько же обращений
сколько строк в таблице которую надо показать? тут уже лучше выбирать сразу все группировками.
Ибо любой разработчик ORM позаботиться об этом
 

AmdY

Пью пиво
Команда форума
Sad Spirit
Вы, товарищ, читер. Вьюха да, решает проблему, но порождает другую и по прежнему требует много знать. А вот с типами реально профит, даже не буду придираться, что не кроссплатформенный.
Но это решает лишь часть проблем за счёт специфичных фич СУБД и в основном трудности с не сильно навореным мускулом, но есть ещё и они решаются с помощью ORM.
 

caballero

Новичок
ну как бы в yii решить нужен тебе lazyLoad или нет, дело одного параметра в массиве.
как и везде я полагаю
дело в том что ты не знаешь наперед сколько елементов будет в массиве в конкретный момент. иначе не нужен был бы массив

Ибо любой разработчик ORM позаботиться об этом
"Это" зависит от объема выборки никакая забота тут не поможет. ORM не настолько интелектуальны
 

MiksIr

miksir@home:~$
просто тут уповали на красоту и гармоничность ООП проекта с ORM во главе. Я и пытался показать что до красоты и гармоничности тут далековато а отсюда вывод - оправдано ли юзать громоздкую прослойку с необходимостью ручного маппинга и малочитабельным кодом или достаточно ограничится AR для рутинных DML операций
Я вот всегда думал, что паттерн AR - это одна из реализаций технологии ORM. Да и не только я. Нам опять открыли глаза, что можно не юзать ORM, а только AR.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Sad Spirit
Вы, товарищ, читер. Вьюха да, решает проблему, но порождает другую и по прежнему требует много знать.
На самом деле вьюху можно доработать, чтобы она была обновляемой, и тогда совершенно необязательно будет знать, пользуешься ли ты в данный момент таблицей или вьюхой:
Код:
create rule foo_delete as
on delete to foo_active do instead (
    update foo set deleted = 1 where id = old.id;
);
9-е правило товарища Кодда, например.
 

caballero

Новичок
Мне неприятно читать срач, где один намеренно говорит тупости, а другие унижаются, когда отвечают ему, не понимая, что он их разводит.
а с чего ты решил что все должны делать только то что приятно тебе.
 

caballero

Новичок
На самом деле вьюху можно доработать, чтобы она была обновляемой
вьюха всегда обновляема
но в целом верно - создание преставлений резко упрощает клиентские выборки. особенно на серьезных СУБД где вьюхи прекомпилятся кешируются и т.д.
 

MiksIr

miksir@home:~$
да, но очень ограниченая реализация. Прежде всего ограниченая здравым смыслом
А может это просто ваш здравый смысл ограничен? Может все же пойти почитать вам не только википедию на тему - что такое ORM, что такое AR, что такое DM.
 

MiksIr

miksir@home:~$
На самом деле вьюху можно доработать, чтобы она была обновляемой, и тогда совершенно необязательно будет знать, пользуешься ли ты в данный момент таблицей или вьюхой:
Код:
create rule foo_delete as
on delete to foo_active do instead (
    update foo set deleted = 1 where id = old.id;
);
9-е правило товарища Кодда, например.
Особо приятно разрабатывать такое. Когда на каждое изменение исходной таблицы нужно пройтись поменять еще тучу вьюх.
 

caballero

Новичок
А может это просто ваш здравый смысл ограничен? Может все же пойти почитать вам не только википедию на тему - что такое ORM, что такое AR, что такое DM.
а может тебе перестать писать что нибудь лишь бы написать.
Мой здравый смысл как минимум основывается на многолетнем опыте програмирования. Я это пользовал еще до того как википедию придумали.
 

caballero

Новичок
Когда на каждое изменение исходной таблицы нужно пройтись поменять еще тучу вьюх.
вьюху менять надо как правило одну и это проще чем выискивать где поменять код в PHP с последующим перетестированием кода
 

MiksIr

miksir@home:~$
Мой здравый смысл как минимум основывается на многолетнем опыте програмирования.
Я это заметил, насчет многолетнего - отсюда такая и ограниченность и агрессия. Банальный комплекс "остаться не у дел".
 

MiksIr

miksir@home:~$
вьюху менять надо как правило одну и это проще чем выискивать где поменять код в PHP с последующим перетестированием кода
Все которым нужна эта новая колонка. А что, после изменения базы вы код перетестировать не будете?... хотя какие тесты, с кем я говорю...
И, к слову, php код вообще менять не нужно будет - просто начать использовать и все. В крайнем случае - добавить phpdoc со новым свойством.
 

caballero

Новичок
- отсюда такая и ограниченность и агрессия
насчет ограничености - пальцем в небо а насчет агресии - уже второй тут вопит как истеричка - "забаньте"
кстати вернись на первую страницу и посмотри кто на кого первый наехал - я или твой подельник с дебильным ником.

Банальный комплекс "остаться не у дел".
Ты даже еще близко не при делах. Зачем высасывать с пальца что нибудь лишь бы ляпнуть. при чем тут мои дела (о которых ты понятия не имеешь) к форуму.
изза таких задротов как ты (и пары нарциссов) один из старейших форумов скатился в УГ.
 
Сверху