2017-02-20 3 views
0

j'essaye de mettre à jour mes produits avec des variantes dynamiques, il n'y a aucun problème dans ajouter ou supprimer mais quand j'essaye de le mettre à jour sur tous les terrains.tout mettre à jour les données des variantes de produit sa mise à jour avec le dernier enregistrement chaque fois dans laravel 5.3

je suis en train de mettre à jour les variantes dynamiques où j'ai inséré

  • couleur - rouge
  • forme -carré

sa dynamique au sujet sous forme de champ, insérez le travail correctement, mais quand j'essaie de le mettre à jour, sa première valeur mise à jour avec à la fois la valeur déposée et ensuite la deuxième avec le champ et je ne serai pas en mesure de distinguer le champ parce que le fichier lame retourne sous la forme d'un rayer.

et quand je suis en train de mettre à jour avec une valeur la répétition de la dernière valeur à la fois le champ si la sortie ressemblera

  • forme carrée
  • forme carrée

contrôleur fonction:

public function updateProducts($id, Request $request) { 


    $featured = Input::has('featured') ? true : false; 

    // Find the Products ID from URL in route 
    $product = Product::findOrFail($id); 



     // Update product 
     $product->update(array(
      'product_name' => $request->input('product_name'), 
      'product_qty' => $request->input('product_qty'), 
      'product_sku' => $request->input('product_sku'), 
      'price' => $request->input('price'), 
      'reduced_price' => $request->input('reduced_price'), 
      'cat_id' => $request->input('cat_id'), 
      'brand_id' => $request->input('brand_id'), 
      'featured' => $featured, 
      'description' => $request->input('description'), 
      'product_spec' => $request->input('product_spec'), 
     )); 

     $product->update($request->all()); 

$variants = VariantsOption::where('products_id', $id)->get(); 

$test=$request->all(); 

foreach ($variants as $v) { 
    $x =$v->id; 
//dd($x); 
//$variants_id = $request->input('variants_id'); 


//dd($variants_id); ans in array 
//exit; 
//dd($v 
// $variants->products_id = $insertedid; 
     foreach($test['variants_id'] as $key=>$attrib){ 

       $var_name=$test['txt'][$key]; 
       $varid=$attrib; 
       //dd($varid); 

     $variants = new VariantsOption; 
     //$variants->products_id=$insertedid; 
     $data=array(
     //'variants_id' => $request->input('variants_id'), 
      'variants_id'=>$varid, 
     'variants_name'=>$var_name 
     ); 

      $variants->where('id', '=' , $x)->update($data); 

     } 




} 

    return redirect('/admin/products/'); 
} 

database image click here

+0

Besoin d'inclure où condition lors de la mise à jour de la base de données – Sona

+0

Pas de pote .. où la condition doit lors de la mise à jour de toute information..u peut imprimer votre requête avant de le déclencher .. généralement il arrive quand vous n'obtenez pas id $ id. C'est la raison pour laquelle cela peut arriver ... vous demander d'imprimer la requête en premier. –

+0

obtenir la sortie pour $ variantes et vérifier ce qui est sortie? –

Répondre

0

utilisation suivante dans votre classe

use Illuminate\Database\Eloquent\ModelNotFoundException; 

OU Ajouter un gestionnaire d'exception au sein de votre fonction

// Will return a ModelNotFoundException if no user with that id 
try 
{ 
    $product = Product::findOrFail($id); 
} 
// catch(Exception $e) catch any exception 
catch(ModelNotFoundException $e) 
{ 
    dd(get_class_methods($e)) // lists all available methods for exception object 
    dd($e) 
} 

Il ressemble produit que $id ne se trouve pas ainsi de suite mettre à jour est l'ajout de nouveaux produits dans la base de données.