使用基本CRUD模型的控制器问题

时间:2010-03-20 18:51:49

标签: php codeigniter

在CodeIgniter中我使用的是base CRUD My_model,但我在浏览控制器中遇到了这个小问题。我的$ data ['posts']获取了名为“posts”的表中的所有帖子。虽然该表中的作者只是一个user_id,这就是为什么我需要使用我的“getusername”函数(从ID中获取用户名)来从users表中获取用户名。

虽然我不知道如何从这里开始,因为它不仅仅是一个帖子。因此,我需要用户名才能成为$ data ['posts']数组或其他智能解决方案的一部分。

任何可以帮助我的人?​​

 function index() {
  $this->load->model('browse_model');

  $data['posts'] = $this->browse_model->get_all();
  $data['user'] = $this->browse_model->getusername(XX);

  $this->load->view('header');
  $this->load->view('browse/index', $data);
  $this->load->view('footer');
 }

2 个答案:

答案 0 :(得分:2)

您最好的选择是通过加入posts表上的users表来获取帖子时获取相关的用户名。这样您只执行一个数据库查询。您可以覆盖基本My_model的get_all函数。

function get_all()
{
    $sql = 'SELECT p.*, u.username
            FROM posts p
            JOIN users u ON u.user_id=p.user_id';

    $query = $this->db->query($sql);
    return $query->result();       
}

每个返回的post对象将具有用户名属性。

$posts = $this->browse_model->get_all();
foreach ($posts as $post)
{
    echo $post->username;
}

答案 1 :(得分:1)

另一种做同样事情的方法:

function get_all()
{
   $this->db
       ->select('posts.*, u.username')
       ->join('users u', 'u.user_id=posts.user_id');

   return parent::get_all();
}
相关问题