Разделенные запятыми значения столбцов в запросе соединения laravel - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть веб-приложение laravel, в котором моя база данных структурирована с помощью приведенных ниже таблиц.Отношения таковы transactions hasmany loading_hire_agreements via lhas_transactions.

Table name: transactions 
| id | date              | number |
|----|-------------------|--------|
| 1  | 12:00:00 00:00:00 | TRN#1  |
| 2  | 10:00:00 00:00:00 | TRN#2  |

Table name: loading_hire_agreements
| id | number |
|----|--------|
| 1  | JY1001 |
| 2  | JY1002 |
| 3  | JY1003 |

Table name: lhas_transactions
| transction_id | lha_id |
|---------------|--------|
| 1             | 1      |
| 1             | 2      |
| 2             | 3      |

Я хочу написать оператор соединения, используя laravel's DB:table()->join(\* any relevant join *\), чтобы сгенерировать приведенный ниже вывод.

| transactions.id  | transactions.number | loading_hire_agreements.number |
|------------------|---------------------|--------------------------------|
| 1                | TRN#1               | JY1001, JY1002                 |
| 2                | TRN#2               | JY1003                         |

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

1 Ответ

0 голосов
/ 24 декабря 2018

Попробуйте использовать GROUP_CONCAT и объедините все три таблицы:

$users = DB::table('transactions')
         ->join('lhas_transactions as lt', 'transactions.id', '=', 'lt.transaction_id')
         ->join('loading_hire_agreements as lha', 'lt.lha_id', '=', 'lha.id')
         ->select(DB::raw('transactions.id, transactions.number, GROUP_CONCAT(lha.number ORDER BY lha.id) AS agreements'))
         ->groupBy('transactions.id', 'transactions.number')
         ->get();
...