投稿、コメント、およびユーザーがYii APIにあります。投稿が照会されると、結果は投稿データ、投稿を行ったユーザ、その投稿のコメント、および完全なユーザデータでコメントを作成したユーザでなければなりません。Yiiで条件付きアクティブなレコード関係を作成する方法
コメントテーブルには、created_by
フィールドが含まれています。このフィールドは、ユーザーテーブルのuser_id
です。これは、IDによるシングルポスト、および任意のコメントを返し
public function actionView($id){
$post = Post::find()
->innerJoinWith('user')
->joinWith('comments')
->where(['{{post}}.id' => $id])
->asArray()
->one();
return $post;
}
:
は、単一のポストを取得するには、ここではコントローラです。すべての記事を取得するには:Postモデルで
public function actionIndex(){
$posts = Post::find()
->joinWith('user', $eager)
->joinWith('comments', $eager)
->orderBy('updated_at DESC')
->limit(self::MAX_ROWS)
->asArray()
->all();
return $posts;
}
を、コメントの関係は次のように設定されている:
public function getComments()
{
return $this
->hasMany(Comment::className(), ['object_id' => 'id']);
}
だから、これは完全なユーザーをTHREは任意のものである場合はコメントを返しますが、ではありませんコメントした各ユーザーのデータ。だから私は今actionIndex()
のみのコメントを持っている投稿を返します....除き、コメントと一緒にユーザーデータを返さないgetComments()
->joinWith('user u2','u2.id = comment.created_by')
にこれを追加しました。
私はthis SO questionを見直しましたが、解決策が見つかりませんでした。コメント付きの投稿にのみ条件付きでjoinWith
を含めるにはどうすればよいですか?