Форум → Программирование → PHP для идиотов → Профи обосрались? UnitOfWork, FK, insertID
Профи обосрались? UnitOfWork, FK, insertID
Страницы: ← Предыдущая страница • Следующая страница →
-
11 августа 2010 г. 19:44, спустя 24 минуты 28 секунд
Абырвалг между народный программер :)С возвращением, Пiха! hyperoff.ru - качественный хостинг php -
11 августа 2010 г. 19:53, спустя 8 минут 41 секунду
всё равно ORM не торкает. На любителя, корочене всё полезно, что в swap полезло -
11 августа 2010 г. 20:26, спустя 33 минуты 18 секунд
Мне AR в Yii нравится,$model = new News;
$model->title = 'Title';
$model->text = 'Text';
$model->save();Спустя 18 сек.Это создает новую новостьСпустя 78 сек.Старую так можно редактировать например:
$model = News::model()->findByPk(2);
$model->title = 'New title';
$model->save(); -
11 августа 2010 г. 20:34, спустя 8 минут 18 секунд
скоро начну изучать этот самый YiiС возвращением, Пiха! hyperoff.ru - качественный хостинг php -
11 августа 2010 г. 20:49, спустя 15 минут 7 секунд
Troy, ну это просто активрекорд, я в этом профита не вижу. А вот ORM позволяет удобно выбрать связанные записи, динамические фильтры всякие создавать. -
11 августа 2010 г. 21:00, спустя 10 минут 26 секунд
Абырвалг, там связанные тоже можно $posts=Post::model()->with('author')->findAll(); , мне нравятся валидаторы , типо как в джанге (может в других фрейморках еще лучше, хз) , ты указал тип , email например, а оно само уже занимается валидацией , а вместе с генераторами CRUD, модели, форм разработка становится очень быстрой -
11 августа 2010 г. 23:12, спустя 2 часа 12 минут 35 секунд
Troy, о, тогда норм. Жаль, что yii, сука, монолитный.
Вот как он разрулил это дело.
http://github.com/m4rw3r/RapidDataMapper/commit/f986e0d3e3baf0fb2ec4d6dbca6541cf940aa972 -
11 августа 2010 г. 23:38, спустя 25 минут 48 секунд
ORM конечно выглядит симпатично, только в реальной жизни всё это очень неэффективно. © Закон дырявых абстракций :)
Например есть таблица с 20 полями, в т.ч. BLOB-ы. Мне надо изменить одно поле. Например какой-то счетчик. Другие данные меня как бы не интересуют.
Как действует типичный ORM:
- определяем критерий (значение primary id)
- получаем запись со всем барахлом (если в объектной модели есть связанные таблицы — возможно еще и их записи)
- изменяем 1 значение из этой кучи
- сохраняем всю хуйню.
Кроме того, что ORM имеет свои накладные расходы на поддержание самого себя, он еще и лишние данные будет гонять туда-сюда.
То же самое на истинном SQL выглядело бы просто UPDATE mytable SET cnt=cnt+1 WHERE id=123
Я закладочку себе сделал на этот rapiddatamapper, только помоему это очередная академическая игрушка без будущего.ιιlllιlllι унц-унц -
11 августа 2010 г. 23:59, спустя 20 минут 29 секунд
ну у доктрины ж и пропела есть будущее. Их многие используют.
Смотри, у тебя всегда есть возможность спуститься до уровня native sql. Не канает, так как мы хотим абстракцию от типа БД? Окей, используем
$Rdm_Adapter->update();/**
* Updates data in the database, returns a query object if no conditions are supplied.
*
* @see Rdm_Query_Update
* @see Rdm_Query_Update::set()
* @see Rdm_Query_Abstract::where()
*
* @param string|array Multiple tables can be updated with the same query
* @param array Associative array with new data (sent to set())
* @param mixed Sent to Rdm_Query_Abstract::where()
* @return Rdm_Query_Update|int|false
*/
public function update($table, $data = false, $conditions = false)
{
$ret = new Rdm_Query_Update($this, $table);
if ($data) {
$ret->set($data);
}
if ($conditions) {
$ret->where($conditions);
return $ret->execute();
}
return $ret;
}
тут тебе и абстракция от типа БД, спасибо QueryBuilder'у и нет дрюча с загрузкой всех данных о записиСпустя 96 сек.сравнение производительности с пропелом и доктриной
http://github.com/m4rw3r/RapidDataMapper/blob/feature/new-api_di-variant/comparison_to_doctrine_and_propel.rst -
12 августа 2010 г. 8:17, спустя 8 часов 18 минут 52 секунды
artoodetoo, ОРМ, AR в первую очередь для увеличения скорости разработки, когда появляется нагрузка и тп, лучше все переписать на обычные SQL запросы -
-
-
12 августа 2010 г. 8:58, спустя 30 минут 56 секунд
artoodetoo, я хотел добавить "и ты это прекрасно знаешь" , но передумал) -
12 августа 2010 г. 12:14, спустя 3 часа 15 минут 46 секунд
у доктрины2 развитая система кеширования: кешируются результаты парсинга дескрипторов, запросов.
В RDM вообще кодогенератор http://pastebin.mozilla-russia.org/106731 -
25 августа 2010 г. 0:37, спустя 12 дней 12 часов 22 минуты
- определяем критерий (значение primary id)
- получаем запись со всем барахлом (если в объектной модели есть связанные таблицы — возможно еще и их записи)
- изменяем 1 значение из этой кучи
- сохраняем всю хуйню.
Наверное, для этого и нужен UnitOfWork, EntityManager, что бы отслеживать изменения
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!