#php #laravel
#php #laravel
Вопрос:
Я перебираю отношения модели
$formatted = [];
foreach($products->childProducts as $childProduct) {
if($childProduct->product_type_id > 1) {
$formatted['associated_products'][] = $this->coreProductInfo($childProduct);
}
}
Существует условие $childProduct->product_type_id
, при котором при == 1 эти продукты не должны добавляться в приведенный выше массив. Вместо этого все эти продукты с product_type_id == 1 должны быть добавлены в последний раз, когда приведенный выше массив полностью подготовлен. т.е. Когда product_type_id: 2,3,4 … все они уже добавлены.
Как я могу добиться этого, чтобы все продукты с идентификатором типа 1 добавлялись в конец?
Ожидаемый результат:
[{
"id": 1,
"product_name": "Shirts",
"product_category": "Men Garments",
"product_area": "Western",
"product_region": "Mumbai",
"product_type_id": "2",
"product_uuid": "398jehiu3939e3393"
},
{
"id": 2,
"product_name": "Trousers",
"product_category": "Men Garments",
"product_area": "Eastern",
"product_region": "Mumbai",
"product_type_id": "3",
"product_uuid": "dnnja3989389834343"
},
{
"id": 3,
"product_name": "Jeggings",
"product_category": "Women Garments",
"product_area": "Western",
"product_region": "Delhi",
"product_type_id": "1",
"product_uuid": "ji202039844930300dj"
}
]
Комментарии:
1. храните их в двух отдельных массивах, объединяйте их после завершения цикла
Ответ №1:
Лучше всего использовать collection..
$formatted = collect();
foreach($products->childProducts as $childProduct) {
if($childProduct->product_type_id > 1) {
$formatted->prepend($this->coreProductInfo($childProduct));
} else {
$formatted->push($this->coreProductInfo($childProduct));
}
}
$formatted->toArray();
Комментарии:
1. Большое вам спасибо @Svetoslav. Сработало как шарм!