2014-09-22 7 views
0

Я пробовал много способов получить имя пользователя в моделях codeigniter. который соответствует идентификатору строки. Но, похоже, не может заставить мою модель работать.Получить имена пользователей ID

Я искал руководство пользователя много раз, чтобы получить ошибки.

Это показывает идентификатор строки/идентификатор пользователя OK, когда эхо его

Но не могу показаться, чтобы сделать модель, чтобы иметь возможность соответствовать имени пользователя с идентификатором строки, а затем повторить его.

Любые предложения по подходящей функции модели.

Когда я нажимаю на свою кнопку редактирования, она отображается в URL-адресе http://localhost/codeigniter/codeigniter-blog/admin/users/edit/1, который работает.

Модель

// Не вернуть имя пользователя, соответствующий идентификатор.

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Model_user extends CI_Model { 

    function getUsername() { 
     $this->db->select('username'); 
     $this->db->where('user_id'); 
     $query = $this->db->get('user'); 
     return $query->row(); 
    } 
} 

Функция контроллера.

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Users extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 

     $this->load->library('user'); 

     if ($this->session->userdata('isLogged') == TRUE) { 

      return true; 

     } else { 

      redirect('/'); 

     } 
    } 

    public function index() { 
     $data['title'] = "Users"; 

     $data['base'] = config_item('HTTP_SERVER'); 

     $data['isLogged'] = $this->user->isLogged(); 

     $this->load->model('users/model_user'); 

     $data['text_enabled'] = "Enabled"; 
     $data['text_disabled'] = "Disabled"; 

     $results = $this->model_user->getUsers(); 

     foreach ($results as $result) { 
      $data['users'][] = array(
       'user_id' => $result['user_id'], 
       'username' => $result['username'], 
       'edit'  => site_url('users/edit/' . $result['user_id']) 
      ); 

     } 

     $data['header'] = $this->load->view('template/common/header', $data, TRUE); 
     $data['footer'] = $this->load->view('template/common/footer', NULL, TRUE); 

     return $this->load->view('template/users/users_list', $data); 
    } 

    function edit($user_id = 0, $user_group_id = 0) { 


     $data['title'] = "Users"; 

     $data['base'] = config_item('HTTP_SERVER'); 

     $data['isLogged'] = $this->user->isLogged(); 

     $this->load->model('users/model_user'); 

     $data['user_id'] = "Current User ID" . " " . $user_id . ":"; 

     $data['user_group_id'] = "Current User Group ID" . " " . $user_group_id . ":"; 

     $data['username'] = "Current User Name:" . " " . $this->model_user->getUsername(); 

     $data['header'] = $this->load->view('template/common/header', $data, TRUE); 
     $data['footer'] = $this->load->view('template/common/footer', NULL, TRUE); 

     return $this->load->view('template/users/users_form', $data); 
    } 
} 

ответ

0

'where' требует второй аргумент, который вы передадите в качестве аргумента своей функции модели. так что-то вроде этого в модели

class Model_user extends CI_Model { 

    function getUsername($id) { 
     $this->db->select('username'); 
     $this->db->where('user_id', $id); 
     $query = $this->db->get('user'); 
     return $query->row(); 
    } 
} 

это соответствует запросу SQL, как SELECT, имя пользователя из пользователя WHERE user_id =?

так в контроллер просто передать идентификатор пользователя в качестве аргумента функции модели

$data['username'] = "Current User Name:" . " " . $this->model_user->getUsername($user_id); 
+0

ошибка Теперь PHP-ошибка была обнаружена Серьезность: 4096 Сообщение: Объект класса StdClass не может быть преобразован в строку Имя файла: пользователи/users.php Line Number: 65 – 2014-09-23 01:24:49

0

я нашел лучший способ, чтобы получить мое имя, чтобы соответствовать идентификатор пользователя

On My Model

function getUsername($user_id) { 
     if (empty($user_id)) { 
      return FALSE; 
     } 

      $this->db->select('username'); 
      $this->db->where('user_id', $user_id); 
      $query = $this->db->get('user'); 

      if ($query->num_rows() == 1) { 
       $result = $query->result_array(); 
       return $result[0]['username']; 
     } else { 
       return FALSE; 
     } 

    } 

на функции контроллера

$this->model_user->getUsername($user_id); 
Смежные вопросы