php $this->db->last_query()在Codeigniter 4中返回NULL,如何获取查询SQL?

yqkkidmi  于 2023-10-15  发布在  PHP
关注(0)|答案(8)|浏览(148)

我刚开始学习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());
ie3xauqp

ie3xauqp1#

这将显示最终查询:

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

neskvpey2#

在CI 4中,参考Doc
可以使用getLastQuery()作为

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

mjqavswn3#

这段代码将帮助你获得codeigniter 4中的最后一个查询。

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

ldfqzlk84#

你可以使用getQuery Select它将返回查询SELECT命令。

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

siotufzp5#

这对我很有效

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

$this->db不能直接从控制器访问,但如果您有任何Model示例,则可以完全访问db对象。

alen0pnh

alen0pnh6#

将此代码添加到类中

$db = \Config\Database::connect();
$query = $db->getLastQuery();
echo $query;
kx5bkwkv

kx5bkwkv7#

以下代码将在CI 4中工作

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

nwlls2ji8#

只需使用$this->db->getLastQuery();即可

相关问题