2017-07-19 5 views
0

既存のコントローラーに1つの新しい関数を作成しました。この関数では、リストを取得するための照会を持つモデルの関数にアクセスしています。モデル関数コードイグナイターを通じてデータを取得できません

コントローラにモデルをロードしました。このモデル関数は、他の関数では機能しますが、新しく作成された関数では機能しません。

class Cart extends CI_Controller 
{ 
    function Cart() 
    { 
     parent::__construct(); 
     $this->mdl_common->checkUserSession(); 
     $this->load->model('mdl_friend_web'); 
     $this->load->model('api/mdl_friend','mdl_friend_api'); 
     $this->load->model('mdl_cart_web'); 
     $this->load->library('pagination'); 
    } 

//この関数のために働く

function ajax_get_cart_list($offset = 0) 
    { 
     is_ajax(); 
     $this->load->model('mdl_cart_web'); 

     $limit = PER_PAGE; 

     $s_data = $_POST; 

     $carts = $this->mdl_cart_web->get_cart_list($limit,$offset,$s_data)->result_array(); 
     $totalRows = $this->mdl_cart_web->get_total_cart_product($s_data)->num_rows(); 

     $data = $this->mdl_common->pagination_data('cart/get_cart_list/',$totalRows,$limit,'show_data'); 
     $data['carts'] = $carts; 
     $data['total_cart'] = $totalRows; 

     $html = $this->load->view('cart/ajax_cart_list',$data,true); 
     echo $html; 
    } 

//この

function calculate_distance() 
    { 


     $limit = ''; 

     $delivery = 0; 

     $previousName = ''; 
     $count = 0; 
     $oneShop = '0'; 
     is_ajax(); 
     // $this->load->model('mdl_cart_web'); 
     $lat1 = $_POST['lat1']; 
     $long1 = $_POST['long1']; 
     // $user_id = $_POST['user_id']; 

     $user_id = $this->session->userdata('user_id'); 

     $carts = $this->mdl_cart_web->get_cart_list($limit,0,'')->result_array(); 

     $response = array(); 
     $data['carts'] = $carts; 
     foreach($data['carts'] as $row) { 

      echo $row['store_latitude']; 

     } 

    } 

モデル

<?php 
class Mdl_cart_web extends CI_Model 
{ 
/*================================================================================= 
           Get cart list 
==================================================================================*/ 

    function get_cart_list($limit,$offset,$data) 
    { 
     $this->db->select('c.*,p.*,s.name as store_name,s.latitude as store_latitude,s.longitude as store_longitude,count(r.product_id) as review , IFNULL(AVG(r.star),0) as avg_star,i.*',false); 
     $this->db->join('p_product as p','c.product_id = p.product_id','left'); 
     $this->db->join('p_product_image as i','c.product_id = i.product_id','left'); 
     $this->db->join('p_product_review as r','c.product_id = r.product_id','left'); 
     $this->db->join('p_store as s','s.store_id = p.store_id','left'); 
     $this->db->limit($limit,$offset);  
     $this->db->where('c.user_id',$this->session->userdata('user_id')); 
     $this->db->group_by('c.cart_id'); 
     $this->db->from('p_cart as c'); 


     return $this->db->get(); 
    } 

?> 

のために働いていない私は、配列データを取得することはできませんよ空白のアラートが表示されます。 ここで何がうまくいかないのですか?助けてください。ありがとう。他はそう、私はロードだと思う一つの機能のためにしていないためコメント上記のようにしてモデルが正常に動作することをあなたの質問を見た後

$this->db->select('c.*,p.*,s.name as store_name,s.latitude as store_latitude,s.longitude as store_longitude,count(r.product_id) as review , IFNULL(AVG(r.star),0) as avg_star,i.*',false); 
$this->db->from('p_cart as c'); 
$this->db->join('p_product as p','c.product_id = p.product_id','left'); 
$this->db->join('p_product_image as i','c.product_id = i.product_id','left'); 
$this->db->join('p_product_review as r','c.product_id = r.product_id','left'); 
$this->db->join('p_store as s','s.store_id = p.store_id','left'); 
$this->db->limit($limit, $offset);  
$this->db->where('c.user_id', $this->session->userdata('user_id')); 
$this->db->group_by('c.cart_id'); 
return $this->db->get(); 

答えて

0

は、私はあなたが適切にこれを試していないクエリを書いていると思いますモデルはあなたが正しく見なければならないものです。

あなたの作業機能では、いくつかの基本的な問題に気付いたことがあります。

  1. is_ajax()の後にモデルのローディングコードがコメントされました。 // $this->load->model('mdl_cart_web');そのコメントを削除してからもう一度やり直してください。

  2. モデルに正確かつ適切なデータを送信してください。下記のコード行が正しく実行されているかどうかを確認してください。

あなたのNot working model。あなたの作業モデルで

$carts = $this->mdl_cart_web->get_cart_list($limit,0,'')->result_array(); 

$carts = $this->mdl_cart_web->get_cart_list($limit,$offset,$s_data)->result_array(); 

そして、私がしたいことの一つは、同じコントローラに複数の関数で同じモデルを使用している場合、あなたは__construct()

public function __construct() { 
    parent::__construct();  
    $this->load->model('mdl_cart_web');    
} 

を使用する必要がありますモデルを__construct()に追加することで、コントローラ全体とすべての機能でモデルを使用することができます。

+0

クエリは他の関数とうまく動作しますので、クエリに問題はありません。 – Sid

0

+0

全体のコントローラで使用する_constructでモデルをロードしていますが、最初にその関数でモデルをローカルにロードしましたが、どちらも動作しません。 – Sid

+0

コメントを削除しましたか?またはモデルに渡すデータが正しいかどうかを確認する@Sid –

+0

はいコメントが削除されました。私は何も制限がないので、空白のオフセットを0として渡しているので、データ・パラメーターは照会に使用されないので、空白です。 – Sid

関連する問題