Объяснение ситуации
Я пытаюсь Геч все операции, основанные на поиске, и я хочу, чтобы включать в себя сгруппированы по запросу всех description
результатов, которые были найдены, так что я могут отображать их ниже результатов.Laravel 5,3 запроса (группа по отношению)
Так, например, я ищу между двумя датами. Это хорошо работает, но я не могу использовать group_by
по этим результатам, так как поле date
присутствует только в таблице transactions
, поэтому я не могу выполнить простой запрос descriptions
.
Вопрос
Я на самом деле не имеют ни малейшего представления о том, как это сделать. Сейчас я использую следующий запрос:
$first = auth()->user()->transactions()
->with('description')
->where('type', 'expense')
->where('date', '>=', $this->parseDate()->firstOfMonth()->format('Y-m-d'))
->where('date', '<=', $this->parseDate()->lastOfMonth()->format('Y-m-d'))
->get();
}
$this->parseDate()
на самом деле просто создает экземпляр углерода в поиске и в определенном формате.
Этот запрос отображает фактические результаты. Все это работает отлично.
Пример
Допустим есть один description
называется gas
и есть 5 transactions
с description_id
из gas
. Это означает, что 5 результатов будут возвращены. Однако рядом с этими результатами я хочу вернуть grouped_by
версию всех найденных описаний, считая общее число descriptions
и всего amount
за каждые description
. И это будет выглядеть примерно так:
Gas Results: 5 Total amount: $ 542
Я не могу просто поставить groupBy('description_id)
на первоначальный запрос следующим образом:
$second = $first->groupBy('description_id');
Так что просто возвращает коллекцию, содержащую один элемент, который содержит оригинал сбор снова.
Любые указатели?
Таблица (Stripped)
CREATE TABLE `transactions` (
`id`,
`user_id`,
`description_id`,
`name`,
`type`,
`date`,
`amount`,
`created_at`,
`updated_at`
)
CREATE TABLE `descriptions` (
`id`,
`user_id`,
`name`,
`created_at`,
`updated_at`
)
Отношение
Description->belongsTo('Transaction');
Transaction->hasMany('Description');
Большое спасибо за ваш ответ. Не могу заставить его работать так, хотя, но я буду смотреть на него более точно, потому что это лучшее решение, чем мое. – Hardist