sql - 如何在 Laravel 中将所有具有共同标题的行组合在一起
问题描述
是否可以通过一个 SQL 查询将所有行实际输出但以非常有组织的 JSON 格式组合在一起?
例如,如果我有一个包含以下列的表:姓氏、名字、地址和电话号码,并且我想根据他们姓氏的第一个字母将这些行组合在一起,这样我就有了一些东西。
{ { letter: 'A', rows: { { lastname: 'Anfar', firstname: 'Peter', address: 'Street city state country', phone_number: '电话号码' },
{
lastname: 'Akon',
firstname: 'Clide',
address: 'Street city state country',
phone_number: 'user_phone_number'
},
{
lastname: 'Abel',
firstname: 'Nigel',
address: 'Street city state country',
phone_number: 'phone number'
},
}
},
{
letter: 'B',
rows: {
{
lastname: 'Best',
firstname: 'Peter',
address: 'Street city state country',
phone_number: 'phone number'
},
{
lastname: 'Bide',
firstname: 'Clide',
address: 'Street city state country',
phone_number: 'user_phone_number'
},
{
lastname: 'Biden',
firstname: 'Nigel',
address: 'Street city state country',
phone_number: 'phone number'
},
}
}
}
我正在使用 laravel,我想知道是否有办法实现这样的目标
解决方案
You can use the groupBy()
function of the collection.
Add a letter
column to your query:
$q = User::query()
->selectRaw('LEFT(lastname,1) AS letter, lastname')
->get();
and then use groupBy('letter')
to group the list
$q->groupBy('letter')
推荐阅读
- flutter - Flutter-如何用“年月”格式替换标签栏
- python - 我正在重新采样每日数据并使用 pandas 聚合我的数据
- java - GCP Dataflow 抛出异常 Shuffle key too large
- java - Spring boot 正在尝试访问 Intellij 中“Spring Cloud Config Server”的先前项目配置
- python - Flask-wtf 无法为 DateTimeField 设置默认值
- css - 为什么 h4 标签的类可能不起作用
- r - 在拼凑图 R 中添加一个 grob
- c - CS50 马里奥 - 错误帮助;格式字符串未使用数据参数
- python - 如何使用 ChemDataExtractor 提取化学实体?
- php - phpmyadmin 用户主机名不是用于 XAMPP 开发和托管在网络服务器上的 localhost