Yii2 viaTable多变量

时间:2016-08-12 22:17:57

标签: php mysql yii2 has-many

我正试图在UserComment中名为viaTable的桌面上使用user_comment_user找到一些Yii2。但是我似乎无法正确插入variables / query

目前我已经设置了两个queries,以检查他们是否(他们自己)获得了正确的结果。

这两个queries不得不merged合而为一:{/ p>

public function findConversation($id)
{
    $query = $this->hasMany(UserComment::classname(), ['id'=>'user_comment_id'])
        ->viaTable('user_comment_user', ['sender_id'=>'id'], function ($query) use ($id) {
            $query->andWhere(['receiver_id'=>$id]);
        });
    $query2 = $this->hasMany(UserComment::classname(), ['id'=>'user_comment_id'])
        ->viaTable('user_comment_user', ['receiver_id'=>'id'], function ($query) use ($id) {
            $query->andWhere(['sender_id'=>$id]);
        });
        return $query;
}

1 个答案:

答案 0 :(得分:2)

答案实际上比我想象的要简单得多:

    public function findConversation($id)
    {
        $query = UserComment::find();
        $query->leftJoin('user_comment_user',      'user_comment_user.user_comment_id=user_comment.id');
        $query->where(['receiver_id'=>$this->id, 'sender_id'=>$id]);
        $query->orWhere(['receiver_id'=>$id, 'sender_id'=>$this->id]);
        $query->orderBy(['created_at'=>SORT_DESC]);

        return $query;
    }