【问题标题】:Object of class stdClass could not be converted to string in php codeigniter类 stdClass 的对象无法在 php codeigniter 中转换为字符串
【发布时间】:2021-02-21 09:59:42
【问题描述】:

我正在尝试根据 company_name 从我的数据库中获取数据,但出现错误:

Error:Object of class stdClass could not be converted to string 

工作人员:

function index()
{
  $user_id =  $this->session->userdata('manager');
    // echo "index"; die; 
   $company_name = $this->staff_model->getCompanyName($user_id);

  //  print_r($company_name); 
  //      die;
   $data['staff'] = $this->staff_model->getStaffDetails($company_name);  //Error on this line

// print_r($data); 
// die;
   $this->load->view('manager/staff/index',$data);
}

员工模型

 <?php
class Staff_model extends CI_Model
{
        //table name: user_login
        function getCompanyName($user_id)
        {
          $company_name=$this->db->select('company_name')->from('user_login')->where(array('id' => $user_id,'delete_flag'=>0))->get()->row();
          return $company_name;
        }
        function getStaffDetails($company_name)
        { 
         $delete_flag=0;
         return  $this->db->get_where('user_login',array('delete_flag!='=>$delete_flag , 'company_name'=>$company_name))->result();  //Error on this line 

         // $query = $this->db->select('*')
          //   ->from('user_login')
          //   ->where("(delete_flag = '$delete_flag )")
          //   ->where("(company_name = $company_name)"); //Error on this line
         //   return $query();  }

正在运行

 print_r($company_name); 
            die;

结果:

stdClass 对象 ([company_name] => ASGB)

如果有人能提供帮助将不胜感激。

【问题讨论】:

  • 您是否尝试过访问$company_namecompany_name 属性?您的 getCompanyName 方法返回一个对象,而不是名称的字符串
  • 你能得到$data['staff'];吗??
  • 哪一行产生了错误?
  • @lagbox 是的,我可以访问 $company_name ,您可以看到 ASGB 实际上是公司名称
  • 您是否尝试访问名为company_name$company_name 的属性? $company_name-&gt;company_name

标签: php arrays codeigniter stdclass


【解决方案1】:

更改您的 Codeigniter 模型:-

staff_model:-

<?php
class Staff_model extends CI_Model
{
        //table name: user_login
        function getCompanyName($user_id)
        {
            $company_name = $this->db->select('company_name')
               ->from('user_login')
               ->where(array('id' => $user_id,'delete_flag'=>0))
               ->get()->row();
            return $company_name->company_name;   //change this.
        }
        
}

注意:-此方法返回单个结果行。如果您的查询不止一行,它只返回第一行。结果以object 形式返回。

$row = $query->row();

echo $row->column_name; // 访问 row() 的变量;函数由-&gt;(箭头(->) 运算符:)。

有关此检查的更多参考:-

https://www.codeigniter.com/userguide3/database/results.html#result-rows

【讨论】:

  • 是正确的,只是需要添加。 “$公司名称->公司名称;”非常感谢您提供的详细信息。
  • @Roxana Slj 如果它解决了您的问题和未来的读者,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2013-12-13
  • 2011-04-06
相关资源
最近更新 更多