Codeigniter 4 中 $this->db->last_query() 的等价物是啥?
Posted
技术标签:
【中文标题】Codeigniter 4 中 $this->db->last_query() 的等价物是啥?【英文标题】:What's the equivalent of $this->db->last_query() in Codeigniter 4?Codeigniter 4 中 $this->db->last_query() 的等价物是什么? 【发布时间】:2020-05-16 22:09:23 【问题描述】:我刚开始学习 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());
【问题讨论】:
“我的查询总是生成 NULL”?也许county.name
应该是country.name
。 “$db 是什么?它没有在控制器中定义”?你可以这样定义它:$db=$this->db;
echo $this->db->getLastQuery();
【参考方案1】:
此代码将帮助您获取 codeigniter 4 中的最后一个查询。
$this->db = \Config\Database::connect();
$data = $builder->get()->getResult();
echo $this->db->getLastQuery(); die;
【讨论】:
【参考方案2】:这应该会显示最终查询:
$cityModel->getLastQuery()->getQuery()
【讨论】:
【参考方案3】:您可以使用 getCompiledSelect 它将返回查询 SELECT 命令。
$sql = $cityModel->getCompiledSelect();
echo $sql;
【讨论】:
在您的情况下,它将是 $cityModel->getCompiledSelect();它带有 $this->db->getCompiledSelect() 谢谢。这行得通!请编辑您的答案。那我就接受了【参考方案4】:在 CI 4 中参考 Doc
你可以使用getLastQuery()
作为
$query = $db->getLastQuery();
echo (string)$query;
【讨论】:
$db 是什么?它没有在控制器中定义。以上是关于Codeigniter 4 中 $this->db->last_query() 的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter:重定向Internet Explorer访问者