在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');
}
答案 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();
}