php – 如何在CodeIgniter中组合query()和limit()方法
发布时间:2020-12-13 22:05:11 所属栏目:PHP教程 来源:网络整理
导读:是否可以在codeigniter中执行类似的操作: publi function getcat($category_id){ $query = "(SELECT cat.id,cat.title "; $query = $query . "FROM bf_categories cat "; $query = $query . "WHERE cat.id=" . $category_id; $this-db-limit(2,4); $records
是否可以在codeigniter中执行类似的操作:
publi function getcat($category_id) { $query = "(SELECT cat.id,cat.title "; $query = $query . "FROM bf_categories cat "; $query = $query . "WHERE cat.id=" . $category_id; $this->db->limit(2,4); $records = $this->db->query($query); return $records->result(); } 我只是为了演示目的简化了查询…但实际上它非常复杂,这就是为什么我决定使用query()方法. 但是限制子句没有包含在查询中……我已经通过在我的控制器中启用codeigniter探查器进行了验证,我可以看到查询是在没有任何限制子句的情况下运行的. 你能告诉我如何使用query()方法完成这个任务吗? 编辑1 我修改了我的模型看起来像这样: public function get_categories_and_products($limit=5,$offset=0,$category_id=null) { print "<BR>the function got the following offeset: $offset and limit: $limit"; $query = "(SELECT cat.category_id,cat.title,cat.image_thumb,cat.deleted,cat.display_weight "; $query = $query."FROM bf_categories cat "; $query = $query."WHERE cat.parent_id=".$category_id; $query = $query." AND cat.category_id <>".$category_id; $query = $query.") UNION ("; $query = $query."SELECT p.product_id,p.name,p.image_thumb,p.deleted,p.display_weight"; $query = $query." FROM bf_product p "; $query = $query."Inner join bf_product_category cp "; $query = $query."on p.product_id=cp.product_id "; $query = $query."Where cp.category_id=".$category_id.") ?"; $records = $this->db->query($query,array($this->db->limit(2,4))); return $records->result(); } 我现在已经硬编码了极限值……但最终,我将使用传递给方法的值.不幸的是,这段代码仍然不起作用. (SELECT cat.category_id,cat.display_weight FROM bf_categories cat WHERE cat.parent_id=3 AND cat.category_id <>3) UNION (SELECT p.product_id,p.display_weight FROM bf_product p Inner join bf_product_category cp on p.product_id=cp.product_id Where cp.category_id=3) SELECT * FROM (`bf_categories`) WHERE `category_id` = '3' LIMIT 4,2 所以它创建了两个单独的select语句. 解决方法
这是CI中查询的样子:
$this->db->select("id,title"); $this->db->where("id",$category_id); $this->db->from("bf_categories"); $this->db->limit($limit); $query = $this->db->get(); if($query->num_rows() > 0) { foreach($query->result() as $row) { echo $row->title; } } 如果您包含完整查询,则可以更轻松地解决问题或向您展示更好,更有效的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |