Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Как можно сократить повторения и объем кода?

Здравствуйте, подскажите пожалуйста, есть у меня два таких условия:
if($request->filled('size')) {
                $idSize = HelperProduct::getId($request->input('size'));
                $priceSize = HelperProduct::getPrice($request->input('size'));
                $sizesObject = Material::whereIn('id',$idSize)->get();
                $product->sizes()->attach($idSize);
                foreach ($priceSize as $value) {
                    foreach ($sizesObject as $size) {
                        if($value['id'] == $size['id']) {
                            $price = new Price();
                            $price->store(['price' => $value['value'],'product_id' => $product->id]);
                            $price->entity()->associate($size)->save();
                        }
                    }
                }
            }
            if($request->filled('material')) {
                $idMaterial = HelperProduct::getId($request->input('material'));
                $priceMaterial = HelperProduct::getPrice($request->input('material'));
                $materialObject = Size::whereIn('id',$idMaterial)->get();
                $product->materials()->attach($idMaterial);
                foreach ($priceMaterial as $value) {
                    foreach ($materialObject as $material) {
                        if($value['id'] == $material['id']) {
                            $price = new Price();
                            $price->store(['price' => $value['value'],'product_id' => $product->id]);
                            $price->entity()->associate($material)->save();
                        }
                    }
                }
            }

Как можно сократить повторения ?
Заранее благодарю за ответ.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
anton_reut
@anton_reut
Начинающий веб-разработчик
Ну так вынеси весь вот этот дублированный кусок в какой-нибудь метод который будет принимать один аргумент который меняется:

foreach ($priceSize as $value) {
                    foreach ($sizesObject as $size) {
                        if($value['id'] == $size['id']) {
                            $price = new Price();
                            $price->store(['price' => $value['value'],'product_id' => $product->id]);
                            $price->entity()->associate($size)->save();
                        }
                    }
                }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы