Всех приветствую!
У меня есть две таблицы Host (поля id, ...request) и Request (поля id, host_id...) Мне надо получить записи из таблицы Host сортированные по поле request. Как правильно можно написать запрос?
return Host::find()
->select('*, (SELECT count(id) FROM request WHERE request.host_id=id) as test_feild')
->orderBy('test_feild DESC')
->limit(10)
->all();
Покажите все столбцы Host и Request и скажите какой результат вы хотите получить. (Сейчас запрос, который вы показали, не очень вяжется с текстом вопроса.)
$rows = (new \yii\db\Query())
->select(['r.*, count(r.host_id) as count'])
->from('host as h')
->leftJoin('request as r', 'h.id = r.host_id')
->all();
Но все еще неправильно работает.
Таблицы Host и Request связаны по поле host_id в таблице Request.
Мне надо получить количество записей host_id в таблице Request и потом добавит через join в таблицу Host
Host::find()->alias('h')
->select(['h.*', 'count(r.*) as request_count])
->joinWith('Request r') // удобно так если настроены связи между моделями
//->where() если надо не всё
->groupBy('h.id')
->orderBy('h.id')
->limit(10)
->all()