0

我对 CodeIgniter 很陌生,不是 OOP 方面的专家,所以请多多包涵。

这是我的模型中的功能:

function get_company(int $user_id, $fields = '*'){
    $r = $this->db->query("SELECT $fields FROM ".$this->db->dbprefix('companies')." WHERE user_id=?", $user_id)->row();
    return $r;        
}
function get_profile($user_id, $fields = '*'){
    $r = $this->db->query("SELECT $fields FROM ".$this->db->dbprefix('users_profiles')." WHERE user_id=?", $user_id)->row();
    return $r;        
}

这是在我的控制器中调用该模型:

function index(){ 
    $this->load->model('profiles_m');
    $profile = $this->profiles_m->get_profile($this->access->getUid());
    $company = $this->profile_m->get_company($this->access->getUid());      

    $vars = array(
            'profile'=>$profile, 
            'company'=>$company,        
        );

    $this->_getTemplate()->build('account', $vars);
}

在我看来:

$company = array(
        'name'     => 'company',
        'id'          => 'company',
        'value'       => "$company->name",
        'class'       => 'styl_f validate[required] text-input input-xlarge',
        'placeholder' => "$company->name"
);

echo $company['value']

我得到的错误是:Call to a member function get_company() on a non-object in C:\..\application\modules\accounts\controllers\accounts.php 我的印象是我收到了这些错误,因为我通过 get_company() 传递了一个非对象,但让我感到困惑的是 get_profile() 没有出现这个错误;我的模型中的 get_profile() 函数与我的 get_company() 函数非常相似。是什么导致了这个错误?我怎样才能摆脱它?

4

3 回答 3

2

问题出在您的控制器中:

function index(){ 
    $this->load->model('profiles_m');
    $profile = $this->profiles_m->get_profile($this->access->getUid());
    $company = $this->profile_m->get_company($this->access->getUid()); // Right here

    $vars = array(
            'profile'=>$profile, 
            'company'=>$company,        
        );

    $this->_getTemplate()->build('account', $vars);
}

$profile 变量$this->profiles_m用作对象,但 $company 缺少对象中的字母 's'。

试试这条线:

    $company = $this->profiles_m->get_company($this->access->getUid());
于 2012-09-13T20:33:33.143 回答
1

您有一个错字,该行应为:

$company = $this->profiles_m->get_company($this->access->getUid()); 

注意“profiles_m”而不是“profile_m”。

于 2012-09-13T20:33:23.447 回答
1
 $company = $this->profile_m->get_company($this->access->getUid());

将“profile_m”替换为“profiles_m”

于 2012-09-13T20:34:59.597 回答