Мне нужно вызвать функцию из представления для эхо значения. Я использую следующий код,
Контроллер (test_controller)
public function displayCategory()
{
$this->load->model('Model_test');
$data['categories'] = $this->Model_test->getCategories();
$this->load->view('test_view', $data);
}
public function display($id)
{
$this->load->model('Model_test');
$name= $this->Model_test->getName($id);
return $name;
}
Модель (Model_test)
function getCategories() {
$query = $this->db->query("SELECT * FROM category");
if ($query->num_rows() > 0) {
return $query->result();
} else {
return NULL;
}
}
function getName($userId) {
$query = $this->db->query("SELECT name FROM user where id = '$userId' ");
if ($query->num_rows() > 0) {
return $query->row()->name;
} else {
return NULL;
}
}
Посмотреть
<div id="body">
<?php
foreach ($categories as $object) {
$temp = $this->test_controller->display($object->id);
echo $object->title . " ". $object->no . $temp . '<br/>';
}
?>
</div>
но некоторая ошибка при запуске кода.
error Сообщение: Неопределенное свойство: CI_Loader :: $ test_controller in view
Я не уверен, что вы используете CodeIgniter 2 или 3.
Во всяком случае, в основном вы не хотите использовать что-либо внутри файлов "Просмотр", кроме, возможно, вспомогательной функции или какого-либо слоя "презентатора" (который должен быть вызван внутри контроллера, я думаю).
Перейдите и прочитайте эту страницу руководства и выполните поиск соединения. Там вы можете узнать о реализации директивы SQL join.
Вы хотите изменить эту getCategories()
(getCategories()
), чтобы она возвращала getCategories()
данные
function getCategories() {
$this->db->select('category.title, category.no, user.name as username')
->from('category')
->join('user', 'user.id = category.id');
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result();
} else {
return NULL;
}
}
и вы можете получить свое имя пользователя, как это
foreach ($categories as $object) {
echo $object->title . " ". $object->no . $object->username . '<br/>';
}
Я не уверен на 100%, поэтому, пожалуйста, опубликуйте комментарии. Я отредактирую этот ответ позже.
qaru.site/questions/208021/...
Также рассмотрите назначение имен таблиц с помощью множественного числа, чтобы категории, пользователи...
Также неверно использовать "category.id как user.id" (сохранение идентификатора пользователя внутри таблицы категорий в поле "id"), вместо этого вы можете использовать либо сводную таблицу, либо в случае отношения 1:1 поля "user_id",,
$categories
Categories.