Задать вопрос
besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Можно ли использовать доп. обращения к базе во благо красоты кода?

Задаюсь вопросом. Когда пишешь код, в стиле ООП, но при этом обращаешься к базе нужно ли стремиться к сокращению количества обращений к базе? Например, код:

static funtion ProductExists( $name ) {
    return  Product::where('name', $name)->exists();
}

static function blablabla( $data ) {
   if (Self::ProductExitst( $data['name'] ) {
        $id = Product:: where('name', $data['name'])->first()->id;
        ProductComment::where('product_id', $id ) .....
        ProductDocuments::....
   }
}

Или целесообразнее не делать вызов метода ProductExists, а сразу

$product = Product:: where ( 'name', $name)->first();
if ( $product ) {
             ProductComment::where('product_id', $product->id ) .....
}

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

Во втором случае мы сразу получаем данные (если они есть) и если они есть, то используем их.

Так нужен читаемый стиль ООП для подобных случаев? он улучшает читаемость, но увеличивает число обращений к базе.

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

Подскажите что да как
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • ProductStar
    Python: навык ООП и функционального программирования
    1 месяц
    Далее
  • Учебный центр IBS
    ARC-005 Аналитические шаблоны
    1 неделя
    Далее
  • Skillfactory
    Разработчик игр на Unity
    18 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
А при чем тут вообще ООП? ООП не говорит нам как часто нужно делать запросы к базе, какие запросы писать. ООП предлагает работать с объектами. При чем тут читаемость вообще? Я могу прочитать как несколько вызовов методов обращения к бд, так и один.
Сокращение колл-ва обращений к базе - не ООПешный подход. Это подход оптимизации производительности. Если у вас есть 1 запрос, ваш код будет работать быстрее, чем если бы запросов было 2. Читаемость кода улучшает грамотное проектирование методов - разделение ответственности, правильные имена и многое другое.
В данном случае нет вообще никакого смысла делать несколько одинаковых запросов. В вашем вы скорее всего просто получите ошибку, если элемент в базе не найден. Если нет, то проверки
if ( $product ) ...
хватит сполна.
Ответ написан
Комментировать
@AlexSku
не буду отвечать из-за модератора
Способы повышения скорости:
1) Хранимые процедуры. (не помню, если такой метод как включение параметров - уже давно не прикасался к БД). Число процедур можно сделать любым.
2) Последовательность объединения таблиц (Join), когда сначала надо применять самые эффективные фильтры (сокращающие выборки)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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