2016-03-02 52 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