在CodeIgniter中调用模型函数

时间:2016-02-15 20:47:11

标签: codeigniter model

我正在尝试使用CodeIgniter,就像在RoR中工作一样,然后在视图中使用模型中定义的函数,依此类推。让我用一些例子来解释:

我的用户控制器

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Users extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function show($id) {
        $user = $this->user_model->get($id);
        $this->data['user'] = $user;
        $this->load_view('users/show');
    }

}

我的用户模型

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class User_model extends MY_Model {

    public function __construct() {
        parent::__construct();
    }

    public function who() {
        return ( $this->name ) ? $this->name : $this->email;
    }

}

然后我想在我看来这样做

...
<main>
    <h3><?= $user->who() ?></h3>
</main>
...

我怎样才能实现这个目标?

注意:如果我回显

$user->email
它可以正常工作......

2 个答案:

答案 0 :(得分:0)

我认为你只是错过了传递到视图中的数据。 $ this-&gt; load-&gt; view()也有拼写错误。

$this->load->view('users/show', $this->data);

另外,你在用吗?

https://github.com/jamierumbelow/codeigniter-base-model

答案 1 :(得分:0)

这里的问题是CI与rails的工作方式不同。这里:

$user = $this->user_model->get($id);

当您在对象上调用get时,您正在分配由CI的ActiveRecord实现动态创建的对象,因此,该对象不具有who方法。但是,这可行:

$this->user_model->who()

因为在该范围内,在控制器中,user_model只是User_model类的一个实例,即who的声明。

我的建议是使用custom helper来实现这种功能。 CI模型不能作为Rails模型工作