0

我有一件事要问大家。我有一个模型类,它从数据库中接收一些文本。在这一行中,我也有 user_id colounm。我需要为每个帖子接收带有另一个模型文件的 userInformation 我该怎么做?

我解释我想要什么:我有这样的表:id[PK] title content user_id[Foreign Key]

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

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

示例数据 1 | 管理员 | 头像.gif

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

4

1 回答 1

1

你可以使用 a JOIN,它看起来像这样使用 CI 的Active Record 类(取决于你到底想要做什么):

$query = $this->db->join('users', 'users.id = posts.user_id')->get('posts');
foreach ($query->result() as $row)
{
    echo $row->post_title;
    echo $row->username;
}

您还可以为每个帖子单独查询用户表,并将用户对象存储在每个帖子的属性中,例如:

// foreach $post
$post->user = $this->db->where('id', $post->user_id)->get('users')->row();

...或其他东西,只需确保不要运行比必要更多的查询(例如,您可以在一个查询中获取所有用户,其中用户 ID 位于一组发布用户 ID 中,无需为每个用户单独查询如果您这样做,请发布)。

我还建议考虑使用像Datamapper for Codeigniter这样的 ORM ,以消除编写连接和复杂关系的麻烦。这似乎有点矫枉过正,但我​​更喜欢它而不是 CI 的 Active Record 类(即使它在内部使用它),即使对于小型项目也是如此。

于 2012-05-22T18:56:22.430 回答