Laravel обновление на основе оператора if - PullRequest
0 голосов
/ 24 февраля 2020

Я новичок ie до laravel и в настоящее время разрабатываю небольшое приложение как часть моего обучения. Я застрял, и мне нужна помощь.

БД выглядит так

USER
- Id
- Name

PRODUCT
- id
- Name
- quantity
- price

PRODUCT_USER
- id
- user_id
- product_id
- quantity

На INSERT новой PRODUCT_USER записи - мне удалось проверить / проверить количество введено не больше, чем количество от продуктов, это работает нормально.

Моя борьба :

При обновлении PRODUCT_USER - если новое значение количества больше чем старое значение количества, это означает, что я добавляю продукты в текущее значение количества, обновите (вычитая) количество (из таблицы продуктов), если продукты все еще доступны.

Если новое значение количества меньше, чем старое количество означает, что я возвращаю некоторые продукты, которые будут назначены другому пользователю. Добавьте к количеству (из таблицы продуктов) новое значение количества.

ProductUserController 
public function update(Request $request, $id){ 
$productUser = ProductUser::where('id',$id)->first(); 
$product = Product::where('id',$productUser->product_id)->first(); 

if($product->quantity >= $request->get('quantity'))
{ 
$product->quantity= $product->quantity + $productUser->quantity - $request->get('quantity'); 
$product->update(); 
$productUser->quantity = $request->get('quantity'); 
$productUser->update(); 
return redirect()->route('allocations.index')->with('success','Updated');
} 

return redirect()->route('allocations.index')->with('message','Not enough qty'); }

1 Ответ

0 голосов
/ 24 февраля 2020

Если я правильно понял, что вы задаете вопрос, вы можете добиться этого, выполнив что-то вроде этого (код не проверен):

public function updateProductUser(Request $request) {

    $userQuantityTotal = 0;

    $product = Product::find($request->productid);

    if (!$product) {
        die('product not found');
    }

    $productUser = $product->users()->where('user_id', auth()->user()->id);

    if ($productUser->exists()) {
        $userQuantityTotal = ($request->quantity + $productUser->quantity);
    } else {
        $userQuantityTotal = $request->quantity;
    }

    if ($userQuantityTotal > $product->quantity) {
        die('this amount is not available');
    }

    $product->quantity -= $request->quantity;
    $product->save();

    if ($productUser->exists()) {
        $productUser->quantity += $request->quantity;
        $productUser->save();
    } else {
        $product->users()->create([
            'user_id' => auth()->user()->id,
            'quantity' => $request->quantity
        ])
    }

    return redirect()->route('route.name')->with('success', 'Success msg');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...