2016-12-27 11 views
1

私はCodeigniterを新しく導入しました。私はそれが私のクエリが動作していないようだ問題があります。私の形式のためですか?CodeIgniter異なるテーブルからデータを取得するための正しいSQL形式

モデル

$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; 

コントローラ

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'); 
} 

モデルから何かを返すことができなかったようです。私はすでにphpmyadminで直接クエリを実行しようとしており、完全に動作します。

答えて

2

あなたはこのように...適切な結果を得るためにテーブルを結合する必要があります。..

あなたのモデル:

$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; 

そして、あなたのコントローラで..

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'); 
    } 
    } 
+0

はあなたにそれをありがとう今すぐうまく動作します:) $ query-> row()の部分を調整するだけでした –

1

あなたの質問を正しく理解している場合は、不適切な結合が適用され、コードイグナイターが正しいクエリを生成できないために起こっています。これを試してみてください:

$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(); 

また、あなたが文を、次のことで、ブラウザ上でクエリを印刷することができますし、それをテストするためのmysqlでそれをコピーして実行することができます。

echo $this->db->last_query(); 

それは現在で実行される最新のクエリを出力しますモデル。

関連する問題