Yii2 viaTable несколько переменных

Я пытаюсь найти ряд UserComment используя viaTable на столе называется user_comment_user в Yii2, Однако я не могу получить мой variables/query вставлен правильно.

В настоящее время у меня есть два queries установить, чтобы проверить, если (самостоятельно) они достигают правильного результата, который они делают.

Это два queries что-то должно быть merged в один:

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;
}

3

Решение

Ответ был на самом деле гораздо проще, чем я предполагал:

    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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]