Codeigniter 4 MySQL查询构建器从本身获取subdata
[更新]
错误现在已经消失,但是与PhpMyAdmin中的数据相同,该错误来自Codeigniter 4查询构建器的所有查询构建器都具有相同的 ID
值。而且,如果我使用 $构建器
方法现在给出了预期的结果,但是我仍然希望能够在可能的情况下正确使用查询构建器。.
有这样的mysql表
id | nama | hari
-----------------
1 | AAA | 1
2 | AAA | 2
3 | AAA | 3
4 | AAA | 4
5 | AAA | 5
6 | BBB | 1
7 | BBB | 2
8 | BBB | 3
我 我得到一个参数 ID
1,我只想获得行号1-5。当我在phpmyadmin中使用此SQL
select m.*
from m_rute m
join (
select m1.*
from m_rute m1
where m1.id = 1
) mt on mt.nama_rute = m.nama_rute
然后我尝试使用codeigniter 4的查询构建器来“翻译”它,但是当我在邮递员上对其进行测试时,它提供了一组数据,其中所有 ID
字段是相同的,与phpmyadmin结果中的字段相同。
控制器
public function show($id = null)
{
$db = \Config\Database::connect();
$builder = $db->table('m_rute as m');
$builder->select('m.*')->where('m.id', $id);
$subquery = $builder->getCompiledSelect();
// this works but wouldn't a fully proper query builder seem nicer?
//////////////
// $builder->select('m.*')
// ->join('('.$subquery.') as m1', 'm1.nama_rute = m.nama_rute')
// ;
// $q = $builder->get();
// $data = $q->getResultArray();
$model = new MRuteModel();
$model->join('('.$subquery.') as t', 't.nama_rute = m_rute.nama_rute');
$data = $model->findAll();
if (!$data) {
return $this->failNotFound('Data not found');
}
return $this->respond($data);
}
任何帮助将不胜感激
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解决方案1:使用 raw/常规查询。
解决方案2a:使用 nofollow noreferrer“> sql sql join> sql join with raw queries 。
解决方案2b:使用
解决方案3a:使用a 关闭。
解决方案3b:使用a 和一个建筑商。
Solution 1: Using Raw/Regular Queries.
Solution 2A: Using SQL Joins With Raw Queries.
Solution 2B: Using SQL Joins With A Query Builder.
getCompiledSelect()
Solution 3A: Using A
where
Clause With A Closure.Solution 3B: Using A
where
Clause With A Builder.