【问题标题】:How to add an ORDER BY clause using CodeIgniter's Active Record methods?如何使用 CodeIgniter 的 Active Record 方法添加 ORDER BY 子句?
【发布时间】:2011-07-16 06:40:22
【问题描述】:

我有一个很小的脚本来从数据库表中获取所有记录,代码如下。

$query = $this->db->get($this->table_name);
return $query->result();

使用这种语法,我如何将ORDER BY 'name' 子句添加到我的选择查询中?

每次我在最后一点一点地坚持顺序时都会出错。

【问题讨论】:

    标签: php codeigniter select activerecord sql-order-by


    【解决方案1】:

    我相信get() 函数会立即运行选择查询并且不接受ORDER BY 条件作为参数。我认为您需要单独声明条件,然后运行查询。试试这个:

    $this->db->from($this->table_name);
    $this->db->order_by("name", "asc");
    $query = $this->db->get(); 
    return $query->result();
    

    CodeIgniter Documentation order_by()

    【讨论】:

      【解决方案2】:

      使用此代码在单个查询中进行多次排序。

      $this->db->from($this->table_name);
      $this->db->order_by("column1 asc,column2 desc");
      $query = $this->db->get(); 
      return $query->result();
      

      【讨论】:

      • 这是另一个问题的正确答案。 Ted 已经充分回答了 2011 年提出的问题。
      【解决方案3】:

      简单易行:

      $this->db->order_by("name", "asc");
      $query = $this->db->get($this->table_name);
      return $query->result();
      

      【讨论】:

      • 是的,这是“简单易行”。可能就像阅读 2011 年发布的此页面上投票最多和接受的答案一样简单。请 1. 切勿发布仅代码的答案和 2. 如果您有独特且有价值的内容要添加到页面,请仅发布答案.
      【解决方案4】:

      只需将“order_by”子句添加到您的代码中,然后将其修改为如下所示。

      $this->db->order_by('name', 'asc');
      $result = $this->db->get($table);
      

      你去。

      【讨论】:

      • where 必须在 order_by 之前
      • @SaniKamal 是的,在 sql 中,WHERE 必须在 ORDER BY 之前,但是在进行 Active Record 方法调用时,CodeIgniter 会自动按照正确的顺序组织呈现的查询子句。
      • @Obi 使用order_by() 的建议已经由该页面上最高投票和接受的答案给出。因此,这个答案没有为页面提供新的价值。请仅当您对所提出的问题有独特且有价值的内容要表达时,才在 Stack Overflow 上发布新答案。
      【解决方案5】:
      function getProductionGroupItems($itemId){
           $this->db->select("*");
           $this->db->where("id",$itemId);
           $this->db->or_where("parent_item_id",$itemId);
      
          /*********** order by *********** */
           $this->db->order_by("id", "asc");
      
           $q=$this->db->get("recipe_products");
           if($q->num_rows()>0){
               foreach($q->result() as $row){
                   $data[]=$row;
               }
               return $data;
           }
          return false;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-11
        • 2015-09-17
        • 2011-01-05
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多