消息:未定义的属性:codeigniter中的stdClass

时间:2014-04-29 07:22:12

标签: php codeigniter stdclass

我收到了这个错误:

  

遇到PHP错误严重性:通知消息:未定义属性:stdClass :: $ positionsNum

当我跑步时。

我的模特

public function load_job($id){        
    $Where = array('jobs.id' => $id);
    $this->db->select('jobs.id, positionsNum, companyName, contract_type.titleEN as contractType');
    $this->db->from('jobs');
    $this->db->join('contract_type', 'jobs.contractTypeId = contract_type.id', 'left');
    $this->db->where($Where);
    $Result = $this->db->get(); 
    return $Result->first_row() ; 
} 

我的观点

   <?php if(isset($job) && count($job) > 0){   ?>
   <div class="row job-detail-row">
      <div class="col-lg-6 job-detail-label"><?php echo lang('contractType'); ?></div>
       <div class="col-lg-6"><a href=""><?php  if(isset($job->contractType)) echo $job->contractType; ?></a></div>
      </div>

      <div class="row job-detail-row">
        <div class="col-lg-6 job-detail-label"><?php echo lang('num_vacancies'); ?>    </div>
        <div class="col-lg-6"><?php  echo $job->positionsNum; ?></div>
      </div>
      <?php } ?>

我的控制器功能

public function job() {

    $job_id = $this->uri->segment(3);

    if(isset($job_id) && !empty($job_id))
    {
        //one job
        $job = $this->job_model->load_job($this->GetLang, $job_id);
        $data['job'] = $job;
        $this->load->view( 'front/singleJob', $data);
    }
}

另外,我打印了返回的对象并返回:

stdClass Object(
   [id] => 9
   [positionsNum] => 2
   [companyName] => 
   [contractType] => type1
  )

但是,contractType即使已经有值,也不会在页面中打印。 我无法弄清楚问题所在。有什么帮助吗?

3 个答案:

答案 0 :(得分:0)

问题出在这里。 你有一个带有一个参数的函数。

public function load_job($id);

但在控制器中你传递两个值。 尝试传递正确的值。

$job = $this->job_model->load_job($this->GetLang, $job_id);

它应该是这样的。

$job = $this->job_model->load_job( $job_id);

答案 1 :(得分:0)

试试这个

public function job() {

    $job_id = $this->uri->segment(3);

    if(isset($job_id) && !empty($job_id))
    {
        //one job
        $data['job'] = $this->job_model->load_job($this->GetLang, $job_id);
        $this->load->view( 'front/singleJob', $data);
    }
}

答案 2 :(得分:0)

所以,它现在解决了:) 此问题在两个文件中发生两次: 首先是我的问题中陈述的内容,我在同一页面的另一个查询中出错。 第二个问题出在HTML文件中。我的完整观点是这样的:

<?php if(isset($service) && count($service) > 0){   ?>
  <div class="row job-detail-row">
  <div class="col-lg-6 job-detail-label"><?php echo lang('contractType'); ?></div>
   <div class="col-lg-6"><a href=""><?php  if(isset($service->contractType)) echo $service->contractType; ?></a></div>
  </div>
  <?php } ?>

  <ul>
  <?php  foreach ($similarServices as $service) { ?> <<========= NOTICE: $service here is the same as the above condition
   <li>           
       <div class="title"><a href="<?php echo site_url('services/service/'.$service->id) ?>"><?php echo $service->title; ?></a>                                        
        </div>
   </li>
  <?php }//end foreach similarServices ?>  
  </ul>

之所以出现是因为我使用了相同的变量名$service,所以我改变了它,它现在有效。希望这对你有所帮助。