LINUX.ORG.RU

Ответ на: комментарий от LongLiveUbuntu

Если есть адекватное ООП, то и адекватные DSL должны быть.

Я не очень много работал с ORM, но сложилось впечатление, что как только задачи начинают выходить за рамки CRUD, с ними начинается боль и страдания.

skiminok1986 ★★★★★
()

бери любой. так или иначе, удобство любого ОРМ заканчивается на работе с одной таблицей ну и автоматическая генерация схемы из набора структур. всякие склейки делают работу с бд крайне неудобной.

ergo ★★★
()
Ответ на: комментарий от sovety_ot_sonika

Засада в том, что сопровождать такой код дороже получается. Это как с регекспами. Если ими не пользуешься часто, каждый раз лезешь в мануалы и расшифровываешь «а что хотел сказать афтор сего творения».

Да и сложные запросы на орм весьма сомнительного качества получаются (нереально автоматизировать то, что напрямую зависит от природы данных и их количества ). В результате код превращается в лапшу - где-то через орм, где-то - raw sql. Лично мне проще юзать орм только для работы с одной таблицей.

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 1)
Ответ на: комментарий от Syncro

а как без боли и страданий поддерживать разные СУБД? например марьюдиби и постгрес

Никак :)

Тут надо просто выбрать: или нормальная работа с СУБД или мы всё таки берём ORM и лишаемся практически всего, что можно делать с реляционной моделью.

skiminok1986 ★★★★★
()
Ответ на: комментарий от skiminok1986

лишиться можно гораздо большего даже при переходе СУБД на новую мажорную версию, например на MySQL 5 -> 8 (номера 6 и 7 они пропустили) сломали вообще все, что смогли, кажется, марьядиби выросла в первую очередь на этой почве

Syncro ★★★★★
()
Последнее исправление: Syncro (всего исправлений: 1)
Ответ на: комментарий от Syncro

лишиться можно гораздо большего даже при переходе СУБД на новую мажорную версию, например на MySQL 5 -> 8 (номера 6 и 7 они пропустили) сломали вообще все, что смогли, кажется, марьядиби выросла в первую очередь на этой почве

Это может быть при любом раскладе. Увы, IT это жидкость, если не газ.

skiminok1986 ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

У меня тот же вопрос. Подозреваю, ответ будет: писать только на стандартном SQL, избегать особенностей СУБД.

Не в Go, но поддерживаю MariaDB и Postgres в одном проекте. Никаких проблем нет вообще, потому что использую Eloquent.

Единственный затык который вспомнил был с подстановкой в запрос сырого куска подстановки использующим COALESCE и одинарными/двойными кавычками. Пришлось написать что-то типа:

if ($this->settings['db']['driver'] == 'pgsql') {
     $labelSQL = $this->db->raw("COALESCE(shipping_labels.label,'') AS label");
} else {
     $labelSQL = $this->db->raw('COALESCE(shipping_labels.label,"") AS label');
}

Подобное ветвление единственное на весь проект. Если бы было где-то еще, я бы дописал расширение в ORM которое бы само делало это чтобы не плодить такие ветвления по всему коду. Ради единственного случая смысла не вижу.

Obezyan
()