$this->db->last_query() 在 Codeigniter 4 中返回 NULL

问题描述 投票:0回答:8

我刚刚开始学习Codeigniter 4。我的查询总是生成NULL,我不知道为什么。如何像 Codeigniter 3 一样查看生成的 SQL Select 命令?

在 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());
php codeigniter activerecord codeigniter-4
8个回答
11
投票

这应该显示最终的查询:

$cityModel->getLastQuery()->getQuery()

5
投票

在 CI 4 中请参阅 Doc

您可以使用

getLastQuery()
作为

$query = $db->getLastQuery();
echo (string)$query;

2
投票

此代码将帮助您获取 codeigniter 4 中的最后一个查询。

 $this->db = \Config\Database::connect();
 $data = $builder->get()->getResult();
 echo $this->db->getLastQuery(); die;

1
投票

您可以使用 getCompiledSelect 它将返回查询 SELECT 命令。

$sql = $cityModel->getCompiledSelect();
echo $sql;

1
投票

这对我有用

$myModel = new MyModel();// your any model
    
$myModel->db->getLastQuery()->getQuery();

$this->db
无法从控制器直接访问,但如果您有任何
Model
实例,那么您可以完全访问
db
对象。


0
投票

以下代码将在 CI 4 中运行

$this->db->getLastQuery()->getQuery();

0
投票

只需使用

$this->db->getLastQuery();


-1
投票

将此代码添加到您的班级中

$db = \Config\Database::connect();
$query = $db->getLastQuery();
echo $query;
© www.soinside.com 2019 - 2024. All rights reserved.