我有一件事要问你们所有人。我有一个模型类从数据库中收到一些文本。在这一行中我也有user_id colounm.I需要收到userInformation与另一个模型文件的每个帖子怎么能我这样做?
我解释我想要的东西: 我有这样的表: id [PK]标题内容user_id [外键]
示例数据: 1 | loreim ipsum |你好它的新内容文本| 1
我也有一个用户表 id [PK]用户名头像
示例数据 1 |管理员| avatar.gif
我从第一张桌子收到数据,但我需要收到作者用户的用户名和头像。如何在控制器中执行此操作。
答案 0 :(得分:1)
您可以使用JOIN
,使用CI Active Record class看起来像这样(取决于您想要做什么):
$query = $this->db->join('users', 'users.id = posts.user_id')->get('posts');
foreach ($query->result() as $row)
{
echo $row->post_title;
echo $row->username;
}
您还可以为每个帖子分别查询users表,并将用户对象存储在每个帖子的属性中,例如:
// foreach $post
$post->user = $this->db->where('id', $post->user_id)->get('users')->row();
......或者其他什么,只是确保不要运行超过必要的查询(例如,您可以在一个查询中获取所有用户,其中用户ID在后用户ID数组中,不需要单独的如果你这样做的话,查询每个帖子。)
我还建议考虑像Datamapper for Codeigniter之类的ORM来解决编写连接和复杂关系的麻烦。这看起来有点矫枉过正,但我比CI的Active Record类更喜欢它(即使它在内部使用它),即使对于小型项目也是如此。