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()); 

'profile_m'ではなく'profiles_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 に答える