错误
遇到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');
}
}
}
}
?>
我找不到问题:(
答案 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;