Codeigniter模型“试图获取非对象的属性”

时间:2017-02-27 20:06:08

标签: php codeigniter codeigniter-3

错误

遇到PHP错误

严重性:注意

消息:尝试获取非对象的属性

文件名:models / task_model.php

行号:43

回溯:

文件:C:\ AppServ \ www \ ci \ application \ models \ task_model.php 行:43 功能:_error_handler

文件:C:\ AppServ \ www \ ci \ application \ controllers \ tasks.php 行:57 功能:get_project_name

文件:C:\ AppServ \ www \ ci \ index.php 行:315 功能:require_once

此型号

<?php 

class Task_model extends CI_Model{

    public function get_task($task_id){

        $this->db->where('id', $task_id);

        $query = $this->db->get('tasks');

        return $query->row();

    }


    public function create_task($data){

        $query = $this->db->insert('tasks', $data);

        return $query;

    }


    public function get_task_project_id($task_id){

        $this->db->where('id', $task_id);

        $query = $this->db->get('tasks');

        return $query->row()->project_id;


    }


    public function get_project_name($project_id){

        $this->db->where('id', $project_id);

        $query = $this->db->get('projects');

        return $query->row()->project_name;
    }


    public function get_task_project_data($task_id){

        $this->db->where('id', $task_id);

        $query = $this->db->get('tasks');

        return $query->row();


    }


    public function edit_task($task_id, $data){

        $this->db->where('id', $task_id);

        $this->db->update('tasks', $data);

        return true;


    }



}

?>

此控制器

<?php 

class Tasks extends CI_Controller{
	
	public function display($task_id){

		$data['task'] = $this->task_model->get_task($task_id);

		$data['main_view'] = "tasks/display";
		$this->load->view('layouts/main', $data);

	}


	public function create($project_id){

		$this->form_validation->set_rules('task_name', 'Task Name', 'trim|required');
		$this->form_validation->set_rules('task_body', 'Task Description', 'trim|required');


		if ($this->form_validation->run() == FALSE) {
			
			$data['main_view'] = 'tasks/create_task';
			$this->load->view('layouts/main', $data);

		}else{


			$data = array(

				'project_id' => $project_id,
				'task_name' => $this->input->post('task_name'),
				'task_body' => $this->input->post('task_body'),
				'due_date' => $this->input->post('due_date')
			);

			if ($this->task_model->create_task($data)) {
				
				$this->session->set_flashdata('task_created', 'Your task Has Been Created');
				redirect('tasks/index');

			}

		}

	}

	public function edit($task_id){

	$this->form_validation->set_rules('task_name', 'Task Name', 'trim|required');
	$this->form_validation->set_rules('task_body', 'Task Description', 'trim|required');


	if ($this->form_validation->run() == FALSE) {

		$data['project_id']		 = $this->task_model->get_task_project_id($task_id);
		$data['project_name']	 = $this->task_model->get_project_name($data['project_id']);
		$data['the_task'] 		 = $this->task_model->get_task_project_data($task_id);
		
		$data['main_view'] = 'tasks/edit_task';
		$this->load->view('layouts/main', $data);

	}else{

		$project_id = $this->task_model->get_task_project_id($task_id);


		$data = array(

			'project_id' => $project_id,
			'task_name'  => $this->input->post('task_name'),
			'task_body'	 => $this->input->post('task_body'),
			'due_date' 	 => $this->input->post('due_date')
		);

		if ($this->task_model->edit_task($task_id, $data)) {
			
			$this->session->set_flashdata('task_updated', 'Your task Has Been Created');
			redirect('projects/index');

		}

	}

}

}


 ?>

我找不到问题:(

2 个答案:

答案 0 :(得分:1)

您需要检查行是否有数据。请用这种方法替换方法。

    public function get_project_name($project_id){

        $this->db->where('id', $project_id);

        $query = $this->db->get('projects');

        $row= $query->row();
        if(isset($row)){
           return $row->project_name;
        }else{
           return "";
        }
}

答案 1 :(得分:-1)

此问题可能重复Trying to get property of non-object - CodeIgniter

在第43行获得查询结果的方式不正确。您需要使用对象表示法,您需要使用数组表示法。

尝试类似:

return $query['0']->project_name;