В моем приложении пользователь может добавить других пользователей в список «Избранное».Вся информация о избранных пользователях хранится в таблице со следующей структурой:
user_id
favorite_id
Кроме того, у каждого пользователя есть свои услуги с ценами.В моем приложении есть таблицы users
и services
, которые связаны между собой таблицей service_user
, которая имеет следующую структуру:
user_id
service_id
price
Для того, чтобы получить всех избранных пользователей определенного пользователя.с их услугами и ценами я делаю следующее:
$user->favorites()->with('services')->get();
Однако в каждом объекте службы в результирующем списке служб нет столбца price
(этот столбец находится в pivot
).
Поэтому я хочу знать, есть ли способ получить столбец price
как часть каждого объекта службы, вместо того, чтобы находиться в сводной таблице. Следующий вопрос уже решает мою проблему, но я хочу знать, есть ли способ сделать это без map()
и / или foreach()
, чтобы улучшить производительность?
В настоящее время яесть следующее решение:
$user->favorites()->with('services')->get()
->map(function ($favorite) {
foreach ($favorite['services'] as &$item) {
$item['price'] = $item->pivot->price;
}
return $favorite;
});