Задать вопрос

Зачем придумали модели в django/laravel если есть sql запросы?

Ведь для того что бы ими пользоваться нужно заново учить целую отдельную технологию
  • Вопрос задан
  • 275 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
torrie
@torrie
Всё знаю, всё умею
ORM - высший уровень абстракции при работе с БД.
Он позволяет при помощи более простых конструкций делать запросы к БД. При чем к любой БД из поддерживаемых.
Пример "более простых" конструкций (django):
Child.objects.filter(name__in=['Паша', 'Илья'], age__gte=18, parent__name='Игорь')

в SQL это будет:
SELECT * FROM "main_child" INNER JOIN "main_parent" ON ("main_child"."parent_id" = "main_parent"."id") WHERE ("main_child"."age" >= 18 AND "main_child"."name" IN (Паша, Илья) AND "main_parent"."name" = Игорь)

Громоздко, не правда ли? Тут еще не все кавычки расставлены.
Пример django-проекта тут: https://repl.it/repls/SneakyStickyHypercard

Помимо красивых запросов в ORM красиво расписываются таблицы БД, а также обычно есть встроенные миграции, защита от инъекций, работа с FK/M2M/индексами и прочее.
Посмотрите как красиво описывается структура БД(django):
from django.db import models

class Parent(models.Model):
  name = models.CharField(max_length=50)

class Child(models.Model):
  name = models.CharField(max_length=150)
  age = models.IntegerField(default=0)
  parent = models.ForeignKey(Parent, on_delete=models.CASCADE)


В общем, не использовать ORM сегодня - глупо(так же как писать проект на голом php/python/..., используйте фреймворк). ORM упрощает жизнь и ускоряет скорость разработки. ORM не всегда формирует оптимальные запросы, но на то мы и программисты, чтобы контролировать это и решать. С ORM вы всегда можете отправить "сырой" SQL-запрос, так что не вижу проблем в этом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
joeberetta
@joeberetta
Читай: https://epdf.pub/google-for-dummies.html
То, что вы называете моделями на самом деле называют ORM/ODM.
И придуманы они чтобы уменьшить затраты на отдельного разраба бд (sqlщика) и дать шанс обычным бэкендерам писать код не задумываясь о запросах в бд. Ну и вторая сторона (тоже из первой вытекает) для большей гибкости/переносимости кода. Т.е. если вы в какой-то момент развития проекта решили по каким-либо причинам сменить бд (у которого естественно другой синтаксис) вам не пришлось снова все переписывать. За вас все сделает орм/одм.
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега Веб-разработка
нельзя просто так взять и загуглить ошибку
А как модели "заменяют" SQL запросы? Этим SQL builder занимается, а не модели.

Ведь для того что бы ими пользоваться нужно заново учить целую отдельную технологию

зачем придумали php если есть C++.
И прочие важные вопросы о тщетности бытия.
Ответ написан
Комментировать
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
заново учить целую отдельную технологию

Какую новую отдельную технологию?
Модели - это суть объекты. Соответственно с ними удобно работать используя технологии объектно ориентированного программирования.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы