Laravel группировка по количеству, доступу и красноречивым отношениям - PullRequest
0 голосов
/ 14 февраля 2020

Я бы хотел сгруппировать по идентификатору внешнего ключа, сосчитать эту группу и затем в представлении иметь возможность доступа к взаимосвязи этого идентификатора внешнего ключа. Первые две вещи (сгруппировать и посчитать) выполняются с помощью следующего запроса:

$collection = Example::selectRaw('count(*) AS total, foreign_key')
->groupBy('foreign_key')
->orderBy('total', 'DESC')
->get();

Но я не могу понять, как я могу получить доступ к красноречивому отношению внешнего ключа, так что в представлении я может сделать что-то вроде

foreach($collection as $c)
{
  $c->total;
  $c->foreign->title
  $c->foreign->address
}

Обратите внимание, что в примере модели определено отношение:

class Example extends Model
{
  public function foreign()
  {
    return $this->hasOne('App\Models\Foreign', 'id', 'foreign_key')
  }
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

В вашем контроллере

$collection = Example::selectRaw('count(*) AS total, foreign_key')->get();

В вашем клинке

foreach($collection as $c)
{
  $c->total;
  $c->foreign->title
  $c->foreign->address
}
0 голосов
/ 14 февраля 2020

Попробуйте это:

$collection = Example::selectRaw('count(*) AS total, foreign_key')
->with('foreign')
->orderBy('total', 'DESC')
->get();

Кроме того, вам, вероятно, не нужно groupBy(), поскольку это отношение один к одному и, следовательно, будет возвращаться только один результат (как предложено @DilipHirapara).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...