使用Codeigniter从user_id接收用户信息

时间:2012-05-22 18:39:40

标签: php codeigniter foreign-keys

我有一件事要问你们所有人。我有一个模型类从数据库中收到一些文本。在这一行中我也有user_id colounm.I需要收到userInformation与另一个模型文件的每个帖子怎么能我这样做?

我解释我想要的东西: 我有这样的表: id [PK]标题内容user_id [外键]

示例数据: 1 | loreim ipsum |你好它的新内容文本| 1

我也有一个用户表 id [PK]用户名头像

示例数据 1 |管理员| avatar.gif

我从第一张桌子收到数据,但我需要收到作者用户的用户名和头像。如何在控制器中执行此操作。

1 个答案:

答案 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类更喜欢它(即使它在内部使用它),即使对于小型项目也是如此。