Предположим, у меня есть array
с именем (data) и внутри моего массива у меня есть foreach
для продуктов. Мне нужно получить каждый из этих пакетов продуктов внутри этого массива (данных).
Вот что я пробовал:
foreach ( $products as $product ) {
$data[] = [
'id' => $product->id,
'packages' => [],
]
foreach ( $product->packageId as $package ) {
$data[]['packages'] = [
'package_id' => $package['id'],
];
}
}
Это возвращает:
- 0 [
id: 977
packages: []
]
- 1 [
packages
package_id: 14
]
- 2 [
packages
package_id: 15
]
Мне нужно вернуть что-то вроде этого:
- 0 [
id: 977
packages: [
package_id: 14,
package_id: 15
]
]
Обновить
как @Helioarch и @albus_severus, упомянутые в их ответах, что я должен сначала создать массив пакетов, а затем включите это в массив данных
это решение будет добавлять старый массив пакетов каждый раз, когда продукты циклически повторяются
Например
- продукт 1 имеет пакеты [1 , 2,3]
- товар 2 имеет пакеты [4,5,6]
в этом моем случае здесь он станет
- товар 1 есть пакеты [1,2,3]
- продукт 2 будет иметь пакеты [1,2,3,4,5,6] <- ведьма не права. </li>
Обновление 2
Вот мой полный код
foreach ( $products as $product ) {
$sums = 0;
foreach ( $product->packageId as $package ) {
// Get the total existing inventory
$pckInvSum = $package->pckInventories
->where( 'expiry_date', '<', Carbon::today() )
->where( 'type', 'existing' )->sum( 'amount' );
// Get the total virtual inventory
$pckInvVirtual = $package->pckInventories->where( 'type', 'virtual' )->sum( 'amount' );
// create new array packages to add it to the main json
$packages[] = [
'package_id' => $package['id'],
'package_price' => $package['price'],
'unit_count' => $package['unit_count'],
'existing' => $pckInvSum,
'virtual' => $pckInvVirtual
];
$sums += $package->pckInventories->sum( 'amount' );
}
$data[] = [
'id' => $product->id,
'product_category_id' => $product->product_category_id,
'child_category_id' => $product->child_category_id,
'child_category_two_id' => $product->child_category_two_id,
'child_category_three_id' => $product->child_category_three_id,
'supplier_id' => $product->supplier_id,
'supplier_name' => $product->supplier->contact_name,
'option_category_id' => $product->option_category_id,
'tax_id' => $product->tax_id,
'barcode' => $product->barcode,
'low_price' => $product->low_price,
'image' => $product->image,
'cost' => $product->cost,
'name_ar' => $product->translations[0]->name,
'name_en' => $product->translations[1]->name,
'details_ar' => $product->translations[0]->details,
'details_en' => $product->translations[1]->details,
'sumInv' => $sums,
'campaign' => [
'id' => $product->campaign[0]->id,
'product_id' => $product->campaign[0]->product_id,
'price' => $product->campaign[0]->price,
'purchasesLimits' => $product->campaign[0]->purchasesLimits,
],
'packages' => $packages,
];