В процедурах удобство в том, что не загромождается код проекта,угу, все загромождается в базе, в которой разберется только хороший ДБА. И если придется что-то менять - без отдельного спеца вообще не обойтись. Мочу о том что в итоге код все равно придется переписывать. Только теперь понадобится не один спец, а два. Ну и "загромождается" - слишком громко сказано, все достаточно хорошо структурируется на уровне репозитория и орм.
а более интеллектуальная вещь.ват?
запросы выполняются только в модели.ват? Модель вообще не должна быть никакой оберткой, и никаких запросов и в помине выполнять не должна. Это тупая сущность с геттерами и сеттерами. Максимум - еще какие-то доп. фишки но ТОЛЬКО если она закрыта каким-то интерфейсом.
При этом модель не тупая обертка над таблицей, а более интеллектуальная вещь.Сильно зависит. При несложной логике модели вполне себе может быть тупая обертка, ака AR.
Модель вообще не должна быть никакой оберткойУ вас какое-то усеченное понимание модели. Модель это не класс, модель это сущность. Модель может содержать достаточно много классов, в частности репозиторий - как часть модели.
мы говорим о модели данныхКто это "мы" и где вы это прочитали? Разговор идет о MVC, именно в том что касается паттерна и роли Model в нем.
Обычной тупой сущности."Это дубли у нас п-п-ростые"(с). Все, что вы себе напридумывали - сугубо ваше личное дело, "модель это класс" - распространенное заблуждение, увы, часто реализуемое на практике.
"модель это класс"
Все, что вы себе напридумывали - сугубо ваше личное дело
Все хорошо работает, пока бизнес не меняет логику, меняться запрос и получается много переделывать.а переписывать и тестировать процедуры в субд проще? тем более, скорее всего, с изменением процедуры придется переписывать код все равно.
Процедуры не только более быстры, но и более гибки.Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное, а у нас денег нет! (с) Это я к тому что чтобы процедура была реально гибкой и быстрой, нужно иметь нехилый скилл в чистом SQL и достаточно глубокие знания конкретной БД, чем не каждый ДБА может похвастаться. В случае переноса логики в код даже средний программист легко напишет логику выборки на ОРМ. То есть вместо 2 спецов с квалификацией выше среднего + средний, нужен один средний. Причем как для разработки, так и для поддержки.
а переписывать и тестировать процедуры в субд проще?вообще-то проще. И чаще всего изменения затрагивают именно этот слой - структура базы и процедуры, а вот "внешнее проявление" (вызов процедур) - остается неизменным.
Решение такой задачи проще вынести в хранимку и уже там ставить проверки и циклы, что не особо - то и трудно.Все что не особо то и трудно - легко пишется запросами без хранимок и не сильно при этом проседает. И все это в 99% в хранимках не нуждается. А все что реально сложно - не каждому по силам написать. Иначе профессия ДБА уже давно спукнулась бы. Молчу что есть специфичные вещи а-ля оракл и прочие экзотические вундервафли, где сложность такой задачи совсем другая, ибо специфику надо знать.
вообще-то проще. И чаще всего изменения затрагивают именно этот слой - структура базы и процедуры, а вот "внешнее проявление" (вызов процедур) - остается неизменным.рили? даже если добавились новые поля?
Ответ - хранить в коде, так как не нужно каждый раз лезть в 2 места если логика меняется, не размазывается поведение на 2 аппликации, и все легко отслеживается в вершн контроле
подумайте, почему энтерпрайз до сих пор хардкодит в БД?По тому что это в большинстве случаев не так? Я как бы работал с несколькими конторами, поддерживающими весьма крупные проекты, в том числе на оракле + ява, и на С++ + МССкуль, никто уже давно не хранит код в процедурах. Во первых неудобно, во вторых сейчас многие системы имеют не одно хранилище, что делает размазывание кода еще больше при хранении кода в бд. Пару хранимок вполне нормально, там где критично быстродействие. Остальное в коде.
есть приложения которые ПОЛНОСТЬЮ находятся в БД, а клиентское приложение наподобие браузера (тонкий клиент) в нем вообще никакой логики нет, кроме как XML в UI переводить.Есть, и тут имеет смысл хранить все в одном месте. Как бы логично. Но опять же, это не тот случай что у ТС.
код пишут программисты БД и они вовсе не DBAКак ни странно, обычно это именно одно и то же, хотя конечно есть чисто программисты SQL, но в большинстве случаев все они стараются получить и ДБА сертификат. На моей памяти чисто прогеров эскуеля я не встречал, возможно это чисто местная специфика.
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]);
$user = $stmt->fetch();
$user = $em->getRepository(User::class)->find($id);