Бортовой журнал Ктулху

Как в Yii2 вывести количество связанных записей из другой таблицы || How to show the count of related records from another table in Yii2

У нас есть TABLE A с некоторым количеством записей и связанная TABLE B с миллиардами записей. В Yii2 есть геттер для связанных таблиц, как раз для таких случаев. Но он хорошо работает с небольшими объемами данных, так как делает много запросов. В идеале, его нужно использовать для единичных записей. А в этом случае нужно добавить подзапрос, который будет работать быстрее.

--

We have table A includes some records and related table B containing billions of records. Yii2 provides a getter for related tables, which works well with a small number of records. For cases with large number of related records, we can use a subquery. 

 

#model:
  public $count;
#service:
  ->select([
 'id',
 'serviceID',
 'date',
 'description',
 'dateCreate',
 'dateProcessed',
 // count from relatedTable

  'Count' => (new Expression('(
 SELECT COUNT(*)
 FROM relatedTable d 
 WHERE d.id = p.id
)'))
#1. view:
echo GridView::widget([
[

'attribute' => 'count',

'label' => 'Кількість',

'format' => 'raw',
 'value' => function($model) {

      return $model['count'];

},

]