清除CodeIgniter中的SELECT字段

时间:2013-05-13 07:40:53

标签: php mysql codeigniter select

我正在使用一个函数来设置整个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();
}

提前致谢!

3 个答案:

答案 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-select
1- <?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()功能仅清除选择部分。