Вот что написано в их документации
Вы также можете передать строку в result (), которая представляет класс для создания экземпляра для каждого объекта результата (примечание: этот класс должен быть загружен)
$query = $this->db->query("SELECT * FROM users;");
foreach ($query->result('User') as $user) {
echo $row->name; // call attributes
echo $row->reverse_name(); // or methods defined on the 'User' class
}
Несмотря на то, что они отображают $ row вместо $ user ... мне кажется, это не работает.Вот моя версия тестирования
Модель
class User extends CI_Model{
var $first;
var $last;
..
function getName() {
return $this->first + " " + $this->last;
}
}
Контроллер
class Tester extends CI_Controller {
public function index() {
$this->load->model('User');
$query = $this->db->query('SELECT * from USERS');
$data = array (
'regular' => $query->result(),
'modeled' => $query->result('User')
);
$this->load->view('test', $data);
}
}
Просмотр
foreach ($regular as $row) {
echo "{$row->FIRST} {$row->LAST} <BR/>";
}
echo "<br/>";
foreach ($modeled as $row) {
echo "{$row->getName()} <BR/>";
}
Есть ли что-то, что яделать неправильно или недоразумение?Я бы предположил, что на основании их документации, что если я назначу класс для набора результатов, класс должен быть заполнен результатами?Теперь, как это происходит, зная, какое поле сопоставить, для меня загадка и вполне может быть причиной, почему это не работает.Я подумал, что, возможно, мне нужно изменить конструктор, чтобы сделать это отображение, но я не видел никакой документации о том, как мне поступить.Я попытался ввести параметр для конструктора, предполагая, что это массив StdClass, но, похоже, он не работал.
Любые разъяснения были бы великолепны!