php - Laravel:如何将连接表加载到子数组中?
问题描述
我有 2 张桌子:
User:
id
schedule_id
name
Schedules:
id
date
我使用以下命令执行查询eager loading
:
User::with (['schedules'])->get()->first();
并得到这样的结果:
[
'id' => '3',
'schedule' => [
'id' => '13',
'date' => '20.11.2020',
],
'name' => 'John',
];
但是当我使用执行类似的查询时join
,
User::join ('schedules', 'user.schedule_id', '=', 'schedules.id')->get()->first();
我得到了这样的结果,合并数组:
[
'id' => '13',
'date' => '20.11.2020',
'name' => 'John',
];
如何在 Eloquent 中使用 join 获得分离数组的结果?
注意:在原始 PHP 和 PDO 中,对于任何带有连接的查询,我总是得到单独的数组。
解决方案
来自数据库查询的数据将始终格式化为平面数组,这就是数据库的工作方式。Eloquent 在幕后有很多魔法,它将正确的相关值映射到集合中的正确模型。
在使用连接时,Eloquent 无法知道哪些数据应该映射到哪个关系或属性。
如果你想使用连接查询,你要么必须为模型上的这些属性使用别名。或者,您可以在使用数据之前按照您想要的方式手动映射属性。
推荐阅读
- java - keystore.load() 有效,但 loadKeyMaterial() 对于同一个密钥库失败
- jestjs - 使用 import.meta.env 测试苗条的组件
- aws-lambda - 如何知道可以使用 AWS API Gateway 对资源执行哪些操作?
- api - 如何获取关注最多的推特用户列表
- redux - Connected-react-router 和 redux 抛出错误你不应该使用 Route 或 withRouter
- python - 立即更新标签文本属性
- java - SDK 22 中已弃用 NetworkInfo 和 WifiConfiguration
- docker - minio 本地仪表板未打开
- frontend - 迁移到微服务,如何重构前端以便通知失败?
- python - 如何在 mplfinance 图中添加单独的行?