Как используя hasMany получить кол-во комментариев(лежат в 3-х одинаковых отдельных таблицах) каждой записи?

Всем Добрый вечер !
В общем как получить кол-во комментов каждой записи если Комментарии лежат в одной таблице, то в модели записей пишем так и собственно финал:
public function getComment()
    {
        return $this->hasMany(Comments::className(),['post_id' => 'id'])->select('id,post_id');
    }


Но задачка чуть другая, есть у меня 3 одинаковые таблицы с комментариями:
1) Таблица - comments_blog
2) Таблица - comments_blog_2
3) Таблица - comments_blog_3

Комментарии распределятся между таблица в зависимости от остатка от деления ID - записи на 3 (т.е. $id % 3);
Теперь вот дилема, как связать 3 модели Комментов в одну, как связать все это через UNION и засунуть в $this->hasMany() либо другим способом не пойму. Буду рад любой помощи.

Заранее всем спасибо !
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@PRC Автор вопроса
В общем, все оказало проще чем думал) Вот, если кому то интересно.
Так как у меня уже был метод, который возвращал полный путь к Классу каждой отдельной таблицы комментов, тогда в Классе записей пишем такое:
public function getComment($postID)
    {
        return $this->hasMany(ComentsBlogObject::changeDB($postID)::className(),['post_id' => 'id'])->select('COUNT(*)');
    }


Ну и в контроллере проверяем, что у нас получилось все как нужно:
$model = ArticleBlog::find()->limit(3)->all();
foreach ($model as $key => $value) {
            print_r($value->getComment($value->id)->count() );
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы