Как реорганизовать функцию счета, чтобы предотвратить использование спагетти-кода в Laravel?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как реорганизовать функцию счета, чтобы предотвратить использование спагетти-кода в Laravel?

Сообщение Anonymous »

Я изучаю Laravel, чтобы создать простой проект торговой площадки с функцией корзины покупок, используя построитель запросов. Таким образом, пользователь может добавлять продукты в корзину. Когда пользователь захочет оплатить счет, будет создан счет вместе с приобретенными товарами в счете.
Ниже приведен пример логики для добавить функцию выставления счета.

Код: Выделить всё

    public function createInvoice(Request $request){
$user = auth()->user();
$carts = DB::table('carts')->join('products', 'carts.product_id', '=', 'products.product_id')->where('carts.user_id', '=', $user->user_id)->where('status', '=', 0)->get();
$product = DB::table('products');

$newInvoice = Invoice::create([
'user_id' => $user->user_id,
'total_price' => $request->total_all_item_price,
'pay_status' => 0,
]);

foreach($carts as $cart){
Item::create([
'product_id' => $cart->product_id,
'invoice_id' => $newInvoice->invoice_id,
'product_name' => $cart->product_name,
'product_price' => $cart->product_price,
'total_price' => $cart->product_price * $cart->count,
'ammount' => $cart->count
]);

$product->where('product_id', '=', $cart->product_id)->update(['stock' => $cart->stock - $cart->count]);
}

DB::table('carts')->where('carts.user_id', '=', $user->user_id)->update(['status' => 1]);

return redirect('shop.invoice');
}
Логика может работать так, как я ожидал, но я вижу, что этот код очень неопрятный и будет вызывать спагетти-код. Существует ли передовая практика рефакторинга этого кода?>

Подробнее здесь: https://stackoverflow.com/questions/784 ... in-laravel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»