增量不适用于第一次
increment doesn't apply at the first time
我是 laravel 的新手,我在一个商店网站上工作,我被困在项目的购物车部分。
为此,我使用了具有 ManyToMeny
关系的枢轴 table
主要问题是,当我第一次添加到购物车时,它总是给我一个,但第二次它增加了,第三次它也增加了。我在 pivote table 结构中搜索,发现 1 作为默认值。
先加
第一次添加的结果
第二次添加
第二次相加的结果!
我不知道如何更改第一个给定的 1 的值。我不知道要更改什么才能使第一个附加值像输入值一样。
我认为这段代码的预期结果是用输入数字给定的值增加 0 的值
这是我的控制器
$found = false;
$user = Auth::user();
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
if($product->rupture_stock == true){
return redirect()->back()->with('error', 'Rupture de stock');
}
$panier = $user->panier;
foreach ($panier->produits as $pr) {
if ($pr->id == $id){
$found = true;
$qt = $pr->pivot->quantite;
$first_num = $request->get('quantite');
// $first_num = $_POST['quantite'];
$second_num = 0;
$result = '';
// $qt = $_POST['quantite'];
if (is_numeric($first_num) && is_numeric($second_num)) {
$result = $first_num + $second_num;
$qt += $result;
}
$panier->produits()->updateExistingPivot($pr->id, ['quantite' => $qt]);
}
}
if (!$found) {
$panier->produits()->attach($product->id);
}
这是我的刀
<form action="{{ url('add/'.$prod->id) }}" method="post" style="margin-bottom:20px" class="cart" id="product_addtocart_form" enctype='multipart/form-data'>
@csrf
<input type="number" value="" name="quantite" class="text" step="1" min="1" max="11" size="4" placeholder="" inputmode="numeric" />
<button style="border-radius: 50px; /*padding:0 20px; margin-left:40px*/" type="submit" name="add-to-cart" value="352" class="single_add_to_cart_button button alt">Ajouter</button>
</form>
您可以使用 syncWithoutDetaching
:
来更简单
$user = Auth::user();
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
if($product->rupture_stock == true){
return redirect()->back()->with('error', 'Rupture de stock');
}
$panier = $user->panier;
$panier->produits()->syncWithoutDetaching([$id => ['quantite' => (int)request('quantite')]]);
https://laravel.com/docs/8.x/eloquent-relationships#syncing-associations
我是 laravel 的新手,我在一个商店网站上工作,我被困在项目的购物车部分。
为此,我使用了具有 ManyToMeny
关系的枢轴 table
主要问题是,当我第一次添加到购物车时,它总是给我一个,但第二次它增加了,第三次它也增加了。我在 pivote table 结构中搜索,发现 1 作为默认值。
先加
第一次添加的结果
第二次添加
第二次相加的结果!
我不知道如何更改第一个给定的 1 的值。我不知道要更改什么才能使第一个附加值像输入值一样。
我认为这段代码的预期结果是用输入数字给定的值增加 0 的值
这是我的控制器
$found = false;
$user = Auth::user();
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
if($product->rupture_stock == true){
return redirect()->back()->with('error', 'Rupture de stock');
}
$panier = $user->panier;
foreach ($panier->produits as $pr) {
if ($pr->id == $id){
$found = true;
$qt = $pr->pivot->quantite;
$first_num = $request->get('quantite');
// $first_num = $_POST['quantite'];
$second_num = 0;
$result = '';
// $qt = $_POST['quantite'];
if (is_numeric($first_num) && is_numeric($second_num)) {
$result = $first_num + $second_num;
$qt += $result;
}
$panier->produits()->updateExistingPivot($pr->id, ['quantite' => $qt]);
}
}
if (!$found) {
$panier->produits()->attach($product->id);
}
这是我的刀
<form action="{{ url('add/'.$prod->id) }}" method="post" style="margin-bottom:20px" class="cart" id="product_addtocart_form" enctype='multipart/form-data'>
@csrf
<input type="number" value="" name="quantite" class="text" step="1" min="1" max="11" size="4" placeholder="" inputmode="numeric" />
<button style="border-radius: 50px; /*padding:0 20px; margin-left:40px*/" type="submit" name="add-to-cart" value="352" class="single_add_to_cart_button button alt">Ajouter</button>
</form>
您可以使用 syncWithoutDetaching
:
$user = Auth::user();
$product = produit::find($id);
if (!$product || !$user) {
abort(404);
}
if($product->rupture_stock == true){
return redirect()->back()->with('error', 'Rupture de stock');
}
$panier = $user->panier;
$panier->produits()->syncWithoutDetaching([$id => ['quantite' => (int)request('quantite')]]);
https://laravel.com/docs/8.x/eloquent-relationships#syncing-associations