Проверьте, сколько запросов отправляется в БД при просмотре Blade в Laravel - PullRequest
0 голосов
/ 24 мая 2019

У меня есть коллекция.

$items = Item:where('count' , '>' , 5)->get();

И у меня есть массив идентификаторов.

$ids = [2 , 4 , 7 , 8];

В моем клинке Laravel я хочу показать каждый по $ предметов на основе идентификаторовмассив.Я сделал что-то вроде этого:

@foreach($ids as $id)
    <a href="#">
        {{ $items->where('id' ,$id)->first()->name }}
    </a>
@endforeach

Работает отлично.Вопрос в том, сколько запросов я отправляю в базу данных?Следующее выполняет новый запрос?

$items->where('id' ,$id)->first()->name

Поскольку я уже get() элементы из базы данных.Другой вопрос: как я могу узнать, сколько запросов отправляется в базу данных при отображении представления / блейда?

Ответы [ 5 ]

2 голосов
/ 24 мая 2019

Для проверки / отладки всех запросов, выполняемых на странице в laravel: (код ниже может быть вставлен в корневой файл)

\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
    var_dump($query->sql);
    var_dump($query->bindings);
    var_dump($query->time);
});
2 голосов
/ 24 мая 2019

Вы всегда можете проверить вкладку сети и выбрать XHR, который будет отображать каждый запрос.Также вы можете использовать

{{ $items->find($id)->name }}

намного плавнее: P

надеюсь, это поможет: D

2 голосов
/ 24 мая 2019

Он получает только один запрос, и тогда метод, где () применяется после получения, в этом случае является фильтром только исходных элементов.

Кроме того, вы можете установить базу данных logger, чтобы проверить, что делает запрос, например, Laravel Debugbar

1 голос
/ 24 мая 2019

Вы можете прослушивать запросы к БД внутри вашего метода:

$counter = 0;
\DB::listen(function($sql) {
    $counter++; //increment for each query was run
});

Ссылка

1 голос
/ 24 мая 2019

Вы уже получили свои элементы из БД, поэтому запросы не выполняются. Вы используете функцию where () коллекции Laravel, которая является функцией фильтрации на основе предоставленной вами пары ключ-значение. https://laravel.com/docs/5.8/collections#method-where

...