2016-03-02 30 views
0

正確的方法,我在我的模型查詢,我需要在我看來,打印數據顯示我的查詢

型號

function get_bank() 
    { 
     $query = $this->db->query("SELECT 
(
    12* (YEAR('account_add_date') - YEAR('start_date')) + 
      (MONTH('account_add_date') - MONTH('start_date')) 
) AS differenceInMonth 
->FROM ('bank') 
WHERE mem_id = '".$this->session->userdata('id')."'"); 
return $query->result(); 
    $data['account_age'] = $query->row_array(); 

    } 

,我試圖打印輸出在我模型,但它不工作,我不知道我出錯的地方。我是MVC的新手,並且仍然習慣它。

查看

<h2>age of account</h2> 

<?php 
$age = $this->model('profiles_model' , $data); 

print "<h2>$age</h2>"; 

?> 

控制器

function index() 
    { 
     $data = array(); 
     $this->load->model('user_profile/profiles_model'); 
     $query = $this->profiles_model->get_bank(); 


     if(!empty($query)) 
     { 
      $data['records'] = $query; 
     } 

     $this->load->view('profile_view', $data); 
    } 
+1

這get_bank()方法實際上並不返回任何東西。這是打算嗎? – DaSourcerer

+0

所以我應該在我的視圖中調用get_bank $ this-> model('get_bank')?,一秒生病更新我的問題 – Beep

+0

您使用的是MVC框架嗎? – SamA

回答

6

讓我們先寫正確的約定你的代碼。

型號

function get_bank() { 
    $mem_id = $this->session->userdata('id'); 
    $query = $this->db 
     ->select("12*(YEAR('account_add_date') - YEAR('start_date')) + (MONTH('account_add_date') - MONTH('start_date')) AS differenceInMonth") 
     ->where('mem_id', $mem_id) 
     ->get('bank'); 

    return $query; 
    // $data['account_age'] = $query->row_array(); <-- Statement after return is useless. 
} 

控制器

function index() { 
    $data = array(
     'records' => array() 
    ); 
    $this->load->model('user_profile/profiles_model'); 
    $bank = $this->profiles_model->get_bank(); 

    if($bank->num_rows()){ 
     $data['records'] = $bank->row_array(); 
    } 

    $this->load->view('profile_view', $data); 
} 

查看

不知道你正在嘗試與銀行數據做,但這裏是你如何打印記錄

<p>Bank data</p> 
<p><?=isset($records['differenceInMonth'])?$records['differenceInMonth']:"No record found"?></p> 
+0

謝謝你,我會試試這個 – Beep

+0

@Beep刪除模型中的一行。 –

+0

我不確定是否真的需要視圖中的迭代。如果我理解正確,似乎最多隻會有一個結果。 – DaSourcerer

0

當加載要傳遞在$data$data['records']具有你是想顯示的數據的圖。

因爲這是你如何將數據傳遞到視圖時加載它,你將需要調用它的方式:

<?php 
    var_dump($records); 
?> 

您也將通過數據需要循環以及假設$記錄被查詢結果的數組,或者使用var_dump而不是打印來驗證數據是否存在。

通過這些閱讀將幫助前進:

https://codeigniter.com/user_guide/general/views.html https://codeigniter.com/user_guide/general/models.html

2

你是否定的牛逼遠,做這種方式:

控制器:

function index() 
    { 

     $this->load->model('user_profile/profiles_model'); 
     $data = $this->profiles_model->get_bank(); 

     $this->load->view('profile_view', $data); 
    } 

型號:

function get_bank() 
    { 
     $query = $this->db->query("SELECT 
      (
      12* (YEAR('account_add_date') - YEAR('start_date')) + 
       (MONTH('account_add_date') - MONTH('start_date')) 
      ) AS differenceInMonth 
     ->FROM ('bank') 
      WHERE mem_id = '".$this->session->userdata('id')."'"); 

     return $query->result(); 
    } 

查看:

<?php 

foreach(differenceInMonth AS $age){ 

    echo "<p>" . $age . "</p>"; 

} 
+0

謝謝你,只是嘗試一個較早的答案,但如果這種劑量不工作我試試這個+1 +1 – Beep