Объект класса stdClass не удалось преобразовать в строку в php codeigniter

#php #arrays #codeigniter #stdclass

#php #массивы #codeigniter #stdclass

Вопрос:

Я пытаюсь получить данные из своей базы данных на основе 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);
}
  

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;
        }
        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)

Был бы признателен, если кто-нибудь может помочь.

Комментарии:

1. вы пытались получить доступ к company_name свойству $company_name ? ваш getCompanyName метод возвращает объект, а не строку для имени

2. можете ли вы получить $data['staff']; ??

3. Какая строка выдает ошибку?

4. @lagbox да, я могу получить доступ к $company_name , как вы можете видеть, поскольку ГБ на самом деле является названием компании

5. вы пробовали получить доступ к свойству $company_name , которое называется company_name ? $company_name->company_name

Ответ №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(); функция с помощью -> (Стрелка(->) оператор:).

Для получения дополнительной информации об этой проверке :-

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

Комментарии:

1. да, исправлено, но нужно добавить. «$company_name-> company_name;» большое вам спасибо за подробности.

2. @Roxana Slj пожалуйста, примите мой ответ, если он решит вашу проблему и будущих читателей.