laravel 连接查询中的逗号分隔列值
Comma separated column values in a laravel join query
我有一个 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 的 DB:table()->join(\* any relevant join *\)
编写连接语句,以便生成以下输出。
| transactions.id | transactions.number | loading_hire_agreements.number |
|------------------|---------------------|--------------------------------|
| 1 | TRN#1 | JY1001, JY1002 |
| 2 | TRN#2 | JY1003 |
我 "have" 使用 DB:table()
因为我正在将此查询连接到前端数据表服务。
尝试使用 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();
我有一个 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 的 DB:table()->join(\* any relevant join *\)
编写连接语句,以便生成以下输出。
| transactions.id | transactions.number | loading_hire_agreements.number |
|------------------|---------------------|--------------------------------|
| 1 | TRN#1 | JY1001, JY1002 |
| 2 | TRN#2 | JY1003 |
我 "have" 使用 DB:table()
因为我正在将此查询连接到前端数据表服务。
尝试使用 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();