Laravel/Lumen将数据透视表中的一列包含到加载结果中
在我的应用程序中,用户可以将其他用户添加到“收藏夹”列表中。有关收藏夹用户的所有信息都存储在具有以下结构的表中:Laravel/Lumen将数据透视表中的一列包含到加载结果中,laravel,many-to-many,pivot-table,lumen,Laravel,Many To Many,Pivot Table,Lumen,在我的应用程序中,用户可以将其他用户添加到“收藏夹”列表中。有关收藏夹用户的所有信息都存储在具有以下结构的表中: user_id favorite_id user_id service_id price 此外,每个用户都有自己的服务价格。我的应用程序中有用户和服务表,它们与服务用户表相互关联,该表具有以下结构: user_id favorite_id user_id service_id price 为了获得特定用户的所有喜爱用户及其服务和价格,我执行以下操作: $user->fa
user_id
favorite_id
user_id
service_id
price
此外,每个用户都有自己的服务价格。我的应用程序中有用户
和服务
表,它们与服务用户
表相互关联,该表具有以下结构:
user_id
favorite_id
user_id
service_id
price
为了获得特定用户的所有喜爱用户及其服务和价格,我执行以下操作:
$user->favorites()->with('services')->get();
但是,在生成的服务列表的每个服务对象中没有price
列(此列位于pivot
)
因此,我想知道是否有办法将price
列作为每个服务对象的一部分,而不是放在pivot表中。已经解决了我的问题,但我想知道是否有办法在不使用map()
和/或foreach()
的情况下实现这一点,从而提高性能
目前,我有以下解决方案:
$user->favorites()->with('services')->get()
->map(function ($favorite) {
foreach ($favorite['services'] as &$item) {
$item['price'] = $item->pivot->price;
}
return $favorite;
});
如果你能解释你的问题,而不是提供其他问题的链接,那就更好了。另外,请告诉我们您为什么不想要
map()
解决方案。@linuxartisan我更新了问题以解释我的问题以及不愿意使用map()
和/或foreach()