Я пытаюсь найти ряд 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;
}
Ответ был на самом деле гораздо проще, чем я предполагал:
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;
}
Других решений пока нет …