php - Codeigniter 4:如何使用构建器类或什至使用常规查询获取一系列下一行和上一行
问题描述
这是我当前的查询,它根据 URL($qs) 中的参数检索项目:我想获取项目的前一行和下一行中的 2 或 3 行。
public function show_questions($qs = false)
{
$db = \Config\Database::connect();
$builder->select('*');
$builder->where('question_id ='. $qs);
$builder->join('segments_en', 'questions_en.tape = segments_en.tape');
$query = $builder->get();
return $query->getResultArray();
}
解决方案
我将表名( movie )、id 列名( Movie_ID ) 和Limit ( 2 ) 分隔到变量中,因为我使用了一个示例表(带有要测试的电影)我附上了结果
public function show_questions($qs = false)
{
$sql = array();
$table = "questions_en";
$joined_table = "segments_en";
$id_key = "question_id";
$limit = 2;
$db = \Config\Database::connect();
$builder = $db->table($table);
// Select previous records
$builder->select('*');
$builder->join($table, $table.'.tape = '.$joined_table.'.tape');
$builder->where($id_key.' >'. $qs);
$builder->orderBy($id_key, 'ASC');
$builder->limit($limit);
$sql[] = '('. $builder->getCompiledSelect() .')';
// Select record which is identified by ID ($qs)
$builder->select('*');
$builder->join($table, $table.'.tape = '.$joined_table.'.tape');
$builder->where($id_key, $qs);
$sql[] = '('. $builder->getCompiledSelect() .')';
// Select next records
$builder->select('*');
$builder->join($table, $table.'.tape = '.$joined_table.'.tape');
$builder->where($id_key.' <'. $qs);
$builder->orderBy($id_key, 'DESC');
$builder->limit($limit);
$sql[] = '('. $builder->getCompiledSelect() .')';
$sql_query = implode('
UNION
', $sql);
$query_string = "SELECT * FROM ($sql_query) questions ORDER BY ".$id_key." ASC";
$query = $db->query($query_string);
//var_dump($query->getResultArray());
return $query->getResultArray();
}
推荐阅读
- javascript - 何时使用 deepZoom 切换到新的缩放级别
- stata - 删除所有为空的变量
- python - 从没有“for”的列表中输出元组
- javascript - 使用 Ajax / Javascript 发布到 CRM 的 API
- r - 根据另一个数据表中的日期范围和序列号分配数据表中的标识符列
- tensorflow - tensorflow keras 无法在预测阶段保持 dropout(设置学习阶段不起作用)
- python - Azure 部署中心不显示所有选项
- python-3.x - 更新保存在 python 文件中的 python 字典
- json - 来自 REST API JSON 的 Flutter Form 供离线使用
- c++ - 将插入的节点链接到 struct c++ 中的链表