0

皆さんにお聞きしたいことが 1 つあります。データベースからいくつかのテキストを受信するモデル クラスが 1 つあります。この行にも user_id 列があります。投稿ごとに別のモデル ファイルで userInformation を受信する必要があります。 ?

私が欲しいものを説明します: 私は次のようなテーブルを持っています: id[PK] title content user_id[Foreign Key]

サンプルデータ: 1 | ローレム・イプサム | こんにちは、新しいコンテンツ テキスト | 1

また、ユーザーテーブルid [PK]ユーザー名アバターがあります

サンプルデータ 1 | 管理者 | avatar.gif

最初のテーブルからデータを受信して​​いますが、作成者ユーザーのユーザー名とアバターを受信する必要があります。コントローラーでこれを行うにはどうすればよいですか。

4

1 に答える 1

1

を使用できます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 の配列にある 1 つのクエリですべてのユーザーをフェッチできます。それぞれに対して個別のクエリは必要ありません)この方法で投稿する場合)。

また、結合や複雑な関係を記述する手間を省くために、Datamapper for Codeigniter のような ORM を検討することをお勧めします。やり過ぎのように思えるかもしれませんが、小規模なプロジェクトであっても、CI の Active Record クラスよりも (内部的に使用されていても) 好みます。

于 2012-05-22T18:56:22.430 に答える