#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 пожалуйста, примите мой ответ, если он решит вашу проблему и будущих читателей.