douhuang7263 2016-12-27 10:58 采纳率: 100%
浏览 46
已采纳

CodeIgniter SQL正确的格式,用于从不同的表中获取数据

I am quite new to Codeigniter. I have a problem wherein it seems my query is not working. Is it because of my format?

Model

$this->db->select('*');
  $this->db->from('
    store_products,
    products,
    category,
    subcategory,
    store,
    store_products_category');
  $this->db->where('store_products_category.store_id', $marketid);
  $this->db->where('store_products_category.subcategory_id', 'subcategory.subcategory_id');
  $this->db->where('subcategory.category_id', 'category.category_id');
  $this->db->where('store_products_category.storeprod_id', 'store_products.storeprod_id');
  $this->db->where('store_products.prod_id', 'products.prod_id');
  $this->db->where('store_products_category.store_id', 'store.store_id');
  $query = $this->db->get();
  $result = $query->row();

  return $result;

Controller

if($marketinfo = $this->MarketModel->getInfobyID($marketid)){
    $data['marketinfolist'] = $marketinfo;
    $this->load->view('layouts/header', $data);
    $this->load->view('clickbasket',$data);
    $this->load->view('navigation/mainfooter');
    $this->load->view('layouts/footer');
}

It seems that it couldn't return anything from the model. I have already tried doing the query directly on phpmyadmin and it works perfectly.

  • 写回答

2条回答 默认 最新

  • dsfd3546 2016-12-27 11:23
    关注

    You need to join the tables to get proper result...Like this..

    Your Model:

    $query = $this->db->select('*')
                    ->from('store_products')
                    ->join('products', 'store_products.prod_id = products.prod_id')
                    ->join('store_products_category', 'store_products_category.storeprod_id = store_products.storeprod_id')
                    ->join('subcategory', 'store_products_category.subcategory_id = subcategory.subcategory_id');
                    ->join('category', 'subcategory.category_id = category.category_id')
                    ->join('store', 'store_products_category.store_id = store.store_id')
                    ->where('store_products_category.store_id', $marketid)
                    ->get();
    $result = $query->row();
    return $result;
    

    And at your controller..

    function getMarketInfo($marketid)
       {
         if(!empty($marketid)){
        $marketinfo = $this->MarketModel->getInfobyID($marketid);
        $data['marketinfolist'] = $marketinfo;
        $this->load->view('layouts/header', $data);
        $this->load->view('clickbasket',$data);
        $this->load->view('navigation/mainfooter');
        $this->load->view('layouts/footer');
         }
       }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?