(Codeigniter)为什么会出现这个错误'试图获得非对象的属性'

时间:2018-02-01 05:02:13

标签: php codeigniter

你能帮我解决这个问题吗?

我的控制器中没有任何代码,因为我从我的视图直接连接到我的模型

我的模特

public function getSeller($id){
    $row = $this->db->select('id_u, name_u, group_u')
                    ->from('u_users')
                    ->where('id_u', $id)
                    ->where('group_u', 2)
                    ->limit(1)
                    ->get()
                    ->row();
    return $row->name_u;
}

我的观点

<td><? echo $this->generals->getSeller($gQ['id_s']); ?></td>

2 个答案:

答案 0 :(得分:0)

好吧,让我们输入一些调试代码,看看发生了什么并将其记录下来......并添加修复程序。

你的问题是,对于某些身份证,你不会有你想象的结果!因此,您需要满足导致NULL的情况。我们怎么知道这个......因为我们已经解决了......

这是我使用的代码。如果对此有任何疑问 - 请问。

// Test conditions - Table entries
// We have an entry for id_u = 1, which has a group_u of 2
// We have an entry for id_u = 2, which has a group_u of 1

public function getSeller($id){
    $row = $this->db->select('id_u, name_u, group_u')
        ->from('u_users')
        ->where('id_u', $id)
        ->where('group_u', 2)
        ->limit(1)
        ->get()
        ->row();

    // Added next line for Debug
    var_dump($row); // What actually happens - Let's See!
    // From the var_dump we will get...
    //      null if no match was found - for $id = 2
    //
    //      OR ( as seen using var_dump ) - for $id = 1
    //
    //      object(stdClass)[19]
    //        public 'id_u' => string '1' (length=1)
    //        public 'name_u' => string 'Fred' (length=4)
    //        public 'group_u' => string '2' (length=1)

    // Did we actually get a result?
    if($row) {
        // Yep, so $row->name_u should exist
        return $row->name_u;
    } else {
        // Nope, so either return a string or a Boolean like FALSE or NULL
        return "Nothing Found";
    }
}

技术上

if($row) { 

应该是

if($row !== NULL) {

哪个是测试等价和类型。但这是另一天的讨论。

答案 1 :(得分:0)

我真的不知道如何在没有控制器的情况下加载视图。请按照正确的方式。在你的模型中,这样做:

public function get_attendance_by_id($attendance_id)
{
    $query = $this->db->select('*')
    ->from('attendance')
    ->where('attendance_id', $attendance_id)
    ->get();

    return $query->row();
}

在您的控制器中:

public function __construct()
{
    parent::__construct();
    $this->load->model('Attendance_Model');
}

public function attendance_home($attendance_id)
{
    $data['attendance'] = $this->Attendance_Model->get_attendance_by_id($attendance_id);

    $this->load->view('attendance', $data);
}

在您的视图中:

   <td><?= $attendance->username ?></td>