Сколько раз Laravel 5.7 выполняет SQL-запрос? - PullRequest
0 голосов
/ 25 января 2019

Изучая Laravel 5.7 на Laracasts.com, он показал, как получить 1:N записей отношений из базы данных с объектами модели Eloquent следующим образом.

// One SQL query is being executed here.
$project = Project::first();

// Another SQL query must be executed here to be abled to count the tasks. Right?
if ($project->tasks->count()) {

    // Is another SQL query being executed here to fetch the task's  records related to the project? 
    foreach ($project->tasks as $task) {

         echo $task->name;
    }
}

Сколько запросов SQL было выполнено с помощью вышеуказанного подхода? Я не уверен, что 2 или 3 SQL-запроса выполняются.

1 Ответ

0 голосов
/ 25 января 2019

То, что вы ищете, это DB :: enableQueryLog / DB::getQueryLog:

Laravel может дополнительно регистрировать в памяти все запросы, которые были выполнены для текущего запроса.Помните, что в некоторых случаях, например, при вставке большого количества строк, это может привести к тому, что приложение будет использовать избыточную память.Чтобы включить журнал, вы можете использовать enableQueryLog method: DB::connection()->enableQueryLog();

\DB::enableQueryLog();

// One SQL query is being executed here.
$project = Project::first();

// Another SQL query must be executed here to be abled to count the tasks. Right?
if ($project->tasks->count()) {

    // Is another SQL query being executed here to fetch the task's  records related to the project?
    foreach ($project->tasks as $task) {

        echo $task->name;
    }
}

# queries so far
\DB::getQueryLog();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...