Что эквивалентно $this-›db-›last_query() в Codeigniter 4?

Я только начал изучать Codeigniter 4. Мой запрос всегда генерирует NULL, и я не знаю, почему. Как я могу увидеть сгенерированную команду SQL Select, как в Codeigniter 3?

В Codeigniter 3 эта команда выполняет эту работу:

echo $this->db->last_query();

И это мой код контроллера в Codeigniter 4, который мне нужен для получения сгенерированного запроса:

$cityModel = new CityModel();
$cities = $cityModel
    ->select('city.name AS cityName')
    ->select('county.name AS countryName')
    ->select('province.name AS provinceName')
    ->join('province', 'city.province_id = province.id', 'left')
    ->join('county', 'city.county_id = county.id', 'left')
    ->result();

Обновление: я попробовал этот код, но он возвращает пустую строку:

var_export((string)$cityModel->db->getLastQuery());

person rostamiani    schedule 31.01.2020    source источник
comment
Мой запрос всегда генерирует NULL? может быть, county.name должно быть country.name. Что такое $db? Он не определен в контроллере? вы могли бы определить это так: $db=$this->db;   -  person Vickel    schedule 31.01.2020


Ответы (3)


Вы можете использовать getCompiledSelect, он вернет команду запроса SELECT.

$sql = $cityModel->getCompiledSelect();
echo $sql;
person Fawad Saboor    schedule 31.01.2020
comment
в вашем случае это будет $cityModel-›getCompiledSelect(); он подключается с помощью $this-›db-›getCompiledSelect() - person Fawad Saboor; 03.02.2020
comment
Спасибо. Это сработало! пожалуйста, отредактируйте свой ответ. Тогда я приму это - person rostamiani; 04.02.2020

Это должно отображать окончательный запрос:

$cityModel->getLastQuery()->getQuery()
person DivPusher    schedule 30.04.2020

В CI 4 см. документ

вы можете использовать getLastQuery() как

$query = $db->getLastQuery();
echo (string)$query;
person Devsi Odedra    schedule 31.01.2020
comment
Что такое $ дб? Он не определен в контроллере. - person rostamiani; 31.01.2020