Одна из основных проблем разработчиков, когда они создают приложение с ORM — это N+1 запрос в их приложениях. Проблема N+1 запроса — это не эффективный способ обращения к базе данных, когда приложение генерирует запрос на каждый вызов объекта. Эта проблема обычно возникает, когда мы получаем список данных из базы данных без использования ленивой или жадной загрузки (lazy load, eager load). К счастью, Laravel с его ORM Eloquent предоставляет инструменты, для удобной работы, но они имеют некоторые недостатки.
В этой статье рассмотрим проблему N+1, способы ее решения и оптимизации потребления памяти.
Рубрика «eloquent»
Решение проблемы N+1 запроса без увеличения потребления памяти в Laravel
2020-06-27 в 20:30, admin, рубрики: eager loading, eloquent, highload, laravel, lazy load, N+1, php, высокая производительностьEloquent ORM кажется простой, но под капотом существует много полускрытых функций и менее известных способов. В этой статье я покажу вам несколько трюков.
Расширение моделей в Eloquent ORM
2017-12-14 в 17:14, admin, рубрики: eloquent, laravel, наследование
Мы прошли долгий путь, с тех дней когда мы в ручную писали SQL запросы в наших веб приложения. Инструменты, такие как Laravel’ий Eloquent ORM позволяют нам работать с базой данных на более высоком уровне, освобождают нас от деталей более низкого уровня — таких как синтаксис запросов и безопасность.
Настройка Laravel relationships — подсчет комментариев (вольный перевод)
2016-05-27 в 13:02, admin, рубрики: eloquent, laravel, orm, php, перевод, Разработка веб-сайтовПредставляю вам вольный перевод статьи "Tweaking Eloquent relations – how to get hasMany relation count efficiently?" с сайта softonsofa.com.
Работая с отношениями моделей, вы вероятнее всего хотели бы подсчитать количество полученных элементов (например, комментарии или лайки). Очевидно существуют способы для этого, но не всегда эффективные, особенно когда вы загружаете коллекцию моделей и их отношения.
Что ж, позвольте мне рассказать вам что мы можем с этим сделать.
Читать полностью »
От любви до ненависти — один шаг, или как я разлюбил магию в ActiveRecord
2016-04-13 в 8:30, admin, рубрики: activerecord, datamapper, eloquent, laravel, orm, php, никто не читает теги, Программирование, производительность Недавно в одном из проектов возникла интересная проблема — весьма долго отдавались данные по REST API, несмотря на их небольшое количество. Что же случилось и почему — рассказываю под катом.
Читать полностью »
Загрузка Eloquent связей используя left join вместо дополнительных запросов
2014-11-16 в 11:45, admin, рубрики: eloquent, laravelЕсли вы когда-либо пытались выполнить следующий код для загрузки данных из вашей Eloquent модели и получали ошибку:
MyModel::with('relation')->where('relation.title', '=', $title)->orderBy('relation.field', 'asc')
То вы наверняка знаете, что Eloquent производит загрузку связанных данных отдельным запросом и ни фильтрация, ни сортировки по ним работать не будут.
В таком случае вам возможно поможет моя библиотека, которая позволяет перенести загрузку BelongsTo связей из дополнительных запросов в основной запрос с left join`ами.
Читать полностью »