【发布时间】:2021-08-09 19:15:26
【问题描述】:
这里是老 PHP 用户,但是 Laravel 新手,我需要帮助(答案或相关解决方案的链接)...
如果我有一个关系模型(或集合,我会在这里感到困惑)......
$data = MyData::with('new_data')->first();
结果...
data = {
a: 1,
b: 2,
new_data: {
c: 3
}
}
是否有一个简单的 eloquent 或收集函数来将 new_data 密钥对合并到父数据?这样会导致这个...
data = {
a: 1,
b: 2,
c: 3
}
我尝试过 flatten、flatMap、mapWithKeys 和其他示例,但未能得到我想要的结果。如果没有简单的解决方案,这将是我的长期方法......
$raw_data = MyData::with('new_data')->first();
$data = collect($raw_data)->put('c', $raw_data->new_data->c);
谢谢!
【问题讨论】:
-
在 eloquent 查询中使用
join来执行此操作。这两张表之间有什么关系吗? -
是的,有。数据的表有一个指向 NewData 的 ID 的 new_data_id。 public function new_data() { return $this->belongsTo(NewData::class);我之前使用过 join,但我在某处读到“急切加载”要快得多
-
如果我们谈论的是多个连接,查询构建器与 eloquent 相比相当快。你可以像youtube.com/watch?v=3TJfR1Ta4GU&t=138s一样测试性能。
标签: laravel eloquent key laravel-models