php - Laravel:如何将连接表加载到子数组中?

标签 php sql laravel eloquent eager-loading

我有 2 张 table :

User:
id
schedule_id
name

Schedules:
id
date

我使用预加载执行查询:

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 中,我总是为任何带有 join 的查询获取单独的数组。

最佳答案

来自数据库查询的数据将始终被格式化为平面数组,这就是数据库的工作方式。 Eloquent 在幕后有很多魔力,它将正确的相关值映射到集合中的正确模型。

使用联接时,Eloquent 无法知道哪些数据应映射到哪个关系或属性。

如果您想使用连接查询,则必须在模型上使用这些属性的别名。或者,您可以在使用数据之前按照您想要的方式手动映射属性。

关于php - Laravel:如何将连接表加载到子数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305790/

相关文章:

php - 使用 html5 分块上传文件

SQL joining,从子查询求和计算总聚合量

php - Laravel SQLSTATE[42S22] : Column not found: 1054 Unknown column '0' in 'field list' (SQL: insert into `add_file` (`0` )

mysql - 根据相关表使用哪个 laravel 查询对顶部条目进行排序

php - 优化大型 MySQL 数据库的查询

php - 如何使用 PHPs PDO 层设置 postgresql 客户端字符集?

php - PHP 中数组类型的转换

java.lang.ClassnotfoundException com.mysql.jdbc.Driver

php - OpenCart 中的权限被拒绝?

sql - 在postgresql中查询大表