Maintenant, dans mon contrôleur, il ressemble à ceciComment puis-je vérifier toutes les données en boucle avant d'enregistrer dans la base de données
assume that $available = [ 1,2,3,4 ]
for ($i=0; $i < 3; $i++) {
if($available < 3){
echo 'success';
$database->save();
}else{
echo 'error';
}
}
cette sortie frémira comme erreur de succès de succès de succès
et il permettra d'économiser 3 succès dans la base de données , comment puis-je vérifier si j'ai 1 erreur, il ne sauvegardera pas de données?
Maintenant, je suis en utilisant
$errors = false;
DB::transaction(function() use ($count,$request,$a,$errors) {
for ($i=0; $i < $count; $i++) {
$warehouse_products_sell = New Warehouse_products_sell;
$id_w = $request->input('idw');
$id_c = $request->get('id_c')[$i];
$id_p = $request->get('id_p')[$i];
$qty = $request->input('quantity_box')[$i];
$price = $request->input('price')[$i];
$available = $this->check_stock($id_w, $id_p, $qty);
if($available > 0){
$warehouse_products_sell->add_by = $request->input('add_by');
$warehouse_products_sell->id_w = $id_w = $request->input('idw');
$warehouse_products_sell->id_c = $request->get('id_c')[$i];
$warehouse_products_sell->id_p = $id_p = $request->get('id_p')[$i];
$warehouse_products_sell->quantity_box = $qty = $request->input('quantity_box')[$i];
$warehouse_products_sell->price = $request->input('price')[$i];
$warehouse_products_sell->serial_num = $a;
$available = $this->check_stock($id_w, $id_p, $qty);
$warehouse_products_sell->save();
}else{
echo "error";
$errors = true;
throw new Exception('Error');
}
}
});
if ($errors) {
return redirect('URL');
}else{
return 'x';
}
thnks Monsieur, je nv savoir avant =] – user8663822
est leur toute façon de rediriger la route ou retourner la page après exception throw – user8663822
pas, parce que quand vous faites cela, la 'fonction' (transaction) va attraper cette exception et la restauration. Ce que vous pouvez faire est de passer une variable sur le 'use' et s'il y a une erreur, changez-la en false ou quoi que ce soit qu'elle vous signale comme une erreur, et en dehors de la transaction, lisez cette variable puis redirigez. – matiaslauriti