-2

codeigniter でユーザー モジュールを作成しようとしていますが、モデル内のクエリの結果をビューで使用できるようにするコントローラーに渡す方法がわかりません。

これが私のモデルです:

public function user() 
        {
            $session = $this->session->userdata('is_logged_in');
            $user_id = $this->session->userdata('id');
            $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1"); 
            foreach ($query->result() as $row)
            {
                $row->first_name;
                $row->id;
                $row->email;
                $row->last_name;
            }

        }

ここに私のコントローラーがあります。これらのオブジェクトを渡すにはどうすればよいですか? または、それらを配列に入れてから配列を渡し(まだ渡す方法がわからない)、コントローラーの配列からそれらを抽出する必要がありますか?

public function edit() 
    {
        $data['first_name'] = $this->session->userdata('first_name');
        $data['profile_icon'] = 'edit';
        $data['profile_breadcrumbs'] = 'Edit Profile';
        $data['main_content'] = 'account/edit';
        $this->load->view('includes/templates/main_page_template', $data);
        $this->load->library('session');
        $this->load->model('account_model');
        $session = $this->session->userdata('session_id');
        $this->account_model->user();
        if($session)
        {
            //TRYING TO GET OBJECTS
        }
    }

これに関連する同様の質問を見つけましたが、探しているものを正確に見つけるのに苦労しています.

前もって感謝します

4

2 に答える 2

2

それを変数に割り当てて、それを操作する必要があります。

$user = $this->account_model->user();

foreach($user->result() as $row){
    echo $row->name;
}

また、データをビューに渡したい場合は、すべて$dataが設定された後に最後にビューをロードする必要があります。

$user = $this->account_model->user();
$data['user'] = $user;
$this->load->view('includes/templates/main_page_template', $data);

モデルによって生成されたユーザー データは、$user変数を介してビューで使用できます。


編集:

また、モデルから何も取得していないことに気付きreturnました:/

モデル:

public function user() 
    {
        $session = $this->session->userdata('is_logged_in');
        $user_id = $this->session->userdata('id');
        $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1"); 
        return $query;

    }

コントローラ:

$user = $this->account_model->user();
$data['user'] = $user;
$this->load->view('includes/templates/main_page_template', $data);

意見:

foreach($user->result() as $row){
    $first_name = $row->first_name;
    $id = $row->id;
    $email = $row->email;
    $last_name = $row->last_name;
}

echo "User id: $id has $first_name as a first name, $last_name as their last name, and $email as their email address";

したがって、モデルはデータベースに対してクエリを実行し、結果を返します。コントローラーは、必要なデータ (この場合はuser()) に対してモデル内の関数を呼び出し、それをビューに送信します。ビューはクエリをループし、データを表示します。

于 2012-12-13T17:50:26.387 に答える
2

コントローラ:

$data['user']=$this->account_model->user();
//populates $data['user'] with the user details based on the session.
$this->load->view('includes/templates/main_page_template', $data);

モデル:

public function user() 
    {
        $session = $this->session->userdata('is_logged_in');
        $user_id = $this->session->userdata('id');
        $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1");
        if($query->num_rows()==1)
        {
           $data = $query->result_array();
           return $data[0];
        //above returns the single row you need to the controller as an array.
        //to the $data['user'] variable.
        } else {
           do something here to handle no return
        }
    }

ビューでは、$user 変数を介してデータにアクセスできるため、次のようにすることができます。

echo 'Hi '.$user['first_name'];
于 2012-12-13T18:14:51.697 に答える