我正在使用一个函数来设置整个sql查询。 其他两个函数使用此函数来获取sql,然后根据需要使用它。
现在,我希望另一个函数执行相同的查询,但我不需要以前的函数所需的所有字段。所以,我想知道在设置后是否有一种方法来替换查询的SELECT部分。
伪代码:
function sql(){
$this->db->select('*');
$this->db->from('table');
}
function defaultSql(){
$this->sql();
$this->get();
}
function notAllFields(){
$this->sql();
// This is the solution I'm looking for. It should clear the select
$this->db->clearSelect();
// I define a different select
$this->db->select('field');
$this->get();
}
提前致谢!
答案 0 :(得分:0)
function sql($fields = '*') {
$this->db->select($fields);
$this->db->from('table');
}
function defaultSql() {
$this->sql();
// ......
}
function notAllFields() {
$this->sql('field');
// .....
}
答案 1 :(得分:0)
这是一个像这样做的简单方法
假设您正在模型中编写所有这些函数
function sql($status = false)
{
if($status == true){
$this->db->select('field');
}else{
$this->db->select('*');
}
}
function get()
{
$this->db->from('table');
}
function defaultSql(){
$this->sql();
$this->get();
}
function notAllFields(){
$this->sql(true);
$this->get();
}
答案 2 :(得分:0)
您可以通过
重置db-select1- <?php $this->db->clear_select(); ?>
将重置所有查询变量(select,where,join..from..etc)。
2- 应用程序/库通过创建 MY_DB_mysqli_driver.php 扩展数据库驱动程序,其中应包含以下内容
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class MY_DB_mysqli_driver extends CI_DB_mysqli_driver
{
public function __construct($param)
{
parent::__construct($param);
}
public function clear_select()
{
$this->qb_select = array();
}
}
然后您可以使用 $ this-&gt; db-&gt; select_clear()功能仅清除选择部分。