【问题标题】:Issue on executing different query inside same Controller function在同一控制器功能内执行不同查询的问题
【发布时间】:2018-09-06 20:32:39
【问题描述】:

这里我有函数index,它有两个不同的模型调用如下:
CONTROLLER:

function index()
{
    $people = $this->M_results->search_people(); // first model method call 
    // print_r($people); //shows result
    $skills = $this->M_results->get_skill($category_name); // second model method call 
}  

型号:

function search_people()
{
    $this->db->select("registration,gender,profile_img,location");
    $this->db->from('search_result');
    $this->db->join('services','search_result.registration = services.reg_id','left');
    $this->db->join('review','search_result.registration = review.reg_id AND review.active = 0','left');
    $query = $this->db->get();
    $result = $query->result_array();
    return $result;
}

function get_skill($category_name)
{
    $this->db->select('GROUP_CONCAT(skills.id ORDER BY skills.name ASC) as id,GROUP_CONCAT(skills.name ORDER BY skills.name ASC) as skill,sub_categories.name as sub_cat,class');
    $this->db->from('skills');
    $this->db->join('sub_categories','skills.sub_cat_id = sub_categories.id');
    $this->db->join('categories','sub_categories.cat_id = categories.id');
    $this->db->where('categories.name',$category_name);
    $this->db->where('skills.active',0);
    $this->db->group_by('sub_categories.name');
    // echo $this->db->get_compiled_select(); exit();
    $query = $this->db->get();
    return  $query->result();
}  

现在的问题是,对search_people 的调用正在返回准确的结果。

但是在运行第二个模型调用,即get_skill 函数时,get_skill 的选择查询包含search_result 函数中的选择查询列。并显示以下数据库错误:

错误号:1054

“字段列表”中的未知列“注册”

选择注册、性别、profile_img、位置、GROUP_CONCAT(skills.id ORDER BY Skills.name ASC) 作为 id、GROUP_CONCAT(skills.name ORDER BY Skills.name ASC) 作为技能、sub_categories.name 作为 sub_cat、class FROM技能 JOIN sub_categories ON Skills.sub_cat_id = sub_categories.id JOIN categories ON sub_categories.cat_id = categories.id WHERE categories.name = 'Child and Pet Care' AND Skills.active =0 GROUP BY sub_categories.name

在上述查询中,您可以看到search_peopleget_skill 中的两列。

【问题讨论】:

  • 在这些字段之前连接表名:注册、性别、profile_img、位置
  • 你的意思是像search_result.registration?但它会引发同样的错误!

标签: php mysql codeigniter activerecord


【解决方案1】:

发布答案以供将来参考。

重置当前查询生成器状态。当您想要构建可在特定条件下取消的查询时很有用。

$this->db->reset_query();

我从以下链接找到了解决方案:
https://www.codeigniter.com/userguide3/database/query_builder.html#CI_DB_query_builder::reset_query

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 2015-12-05
    • 2012-02-22
    • 2017-09-18
    • 1970-01-01
    • 2020-06-07
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多