0

モデルがオブジェクトを返すというこの問題がありますが、コントローラーでそのフィールドが見つからないように見える場合、常にこのエラー「オブジェクト以外のプロパティを取得しようとしています」が発生しますが、結果を var_dump() しようとすると私のモデルからの戻り値があります。なぜアクセスできないのか理解できないようです。アクティブなレコードに接続されていますか?

以下は私のモデルです。

public function retrieve($user_id = FALSE)
{
    if($user_id === FALSE)
    {
        $query = $this->db->get('login');
        return $query->row();
    }
    else 
    {
        $query = $this->db->get_where('login',array('account_id'=>$user_id));
        return $query->result();
    }
}

これが私のコントローラーのコードスニペットで、モデルにアクセスしようとした部分です

    $this->load->model('account');
    $acc = $this->account->retrieve($sess_userid);
    var_dump($this->account->retrieve($sess_userid));
    echo $acc->user_id;

$sess_userid には値があることに注意してください。それは数字です

誰でもこの問題のアイデアを思いつきましたか?

更新しました

print_r()

Array (
        [0] => stdClass Object (
            [account_id] => 2000005
            [userid] => admin
            [user_pass] => d033e22ae348aeb5660fc2140aec35850c4da997
            [sex] => M
            [email] => admin@ignitero.com
            [group_id] => 99
            [admin] => 1
            [restrictions] => 0
            [state] => 0
            [unban_time] => 0
            [expiration_time] => 0
            [logincount] => 0
            [lastlogin] => 0000-00-00 00:00:00
            [last_ip] =>
            [birthdate] => 0000-00-00
            [character_slots] => 0
            [pincode] =>
            [pincode_change] => 0
        )
)

var_dump()

array(1) { 
    [0]=> object(stdClass)#23 (18) { 
        ["account_id"]=> string(7) "2000005" 
        ["userid"]=> string(5) "admin" 
        ["user_pass"]=> string(40) "d033e22ae348aeb5660fc2140aec35850c4da997" 
        ["sex"]=> string(1) "M" 
        ["email"]=> string(18) "admin@ignitero.com" 
        ["group_id"]=> string(2) "99" 
        ["admin"]=> string(1) "1" 
        ["restrictions"]=> string(1) "0" 
        ["state"]=> string(1) "0" 
        ["unban_time"]=> string(1) "0" 
        ["expiration_time"]=> string(1) "0" 
        ["logincount"]=> string(1) "0" 
        ["lastlogin"]=> string(19) "0000-00-00 00:00:00" 
        ["last_ip"]=> string(0) "" 
        ["birthdate"]=> string(10) "0000-00-00" 
        ["character_slots"]=> string(1) "0" 
        ["pincode"]=> string(0) "" 
        ["pincode_change"]=> string(1) "0" 
    } 
} 
4

1 に答える 1

1

オブジェクトを返すときは、単一​​のレコードを取得しているため、row を使用する必要があります。

public function retrieve($user_id = FALSE)
{
    if($user_id === FALSE)
    {
        $query = $this->db->get('login');
        return $query->result();
    }
    else 
    {
        $query = $this->db->get_where('login',array('account_id'=>$user_id));
        return $query->row();
    }
}

そして、このようにアクセスします

echo $acc->user_id;

条件が複数の行を返す必要があると思われる場合は、このようにアクセスできます

return $query->result();

echo $acc[0]->user_id;
echo $acc[1]->user_id;
echo $acc[2]->user_id;
于 2013-04-20T12:00:32.953 に答える