2017-03-17 3 views
0

J'utilise Jquery Tag-it. Quand je passe des valeurs tag-it au contrôleur et le vérifie par var_dump(); toutes les valeurs affichent parfaitement mais le problème i que quand il passe à DB il magasin seulement la dernière valeur .. S'il vous plaît, aidez-moitag-it en entrée stocker uniquement la dernière valeur dans DB laravel 5.4

<input type="text" value="" data-role="tagsinput" id="tags" name="wish-tags" class="form-control">

Contrôleur

$wishlist = Wishlist::firstOrNew(['user_id' => Auth::user()->id]); 
     if (!empty($wishlist)) { 
      $locations = $request->input('wish-tags'); 
      //var_dump($locations); exit(); 
      foreach (explode(",", $locations) as $location) { 

       $wishlist->update([ 
        'user_id' => Auth::user()->id, 
        'locations' => $location, 

       ]); 
      } 
     } 
+0

Cela arrive à cause de la boucle foreach. Mais il n'est pas clair comment résoudre cela sans voir la structure des données et les relations que vous utilisez. En outre, pour sauvegarder les tags, vous voulez généralement utiliser une relation plusieurs-à-plusieurs. –

+0

ok .. mais s'il vous plaît expliquer comment créer une relation many-to-many entre les balises User et Wishlist? –

+0

Vous devez créer un tableau croisé dynamique et deux relations 'belongsToMany()'. https://laravel.com/docs/5.4/eloquent-relationships#many-to-many - Après cela, utilisez la méthode 'sync()' pour synchroniser les tags. https://laravel.com/docs/5.4/eloquent-relationships#updating-many-to-many-relationships –

Répondre

0

Essayez ceci:

$locations = $request->input('wish-tags'); 
//var_dump($locations); exit(); 
foreach (explode(",", $locations) as $location) { 
$wishlist = Wishlist::firstOrNew(['user_id' => Auth::user()->id, 'locations' => $location ]); 
     if (!empty($wishlist)) { 
      $wishlist->update([ 
      'user_id' => Auth::user()->id, 
      'locations' => $location, 
      ]); 
     } 
} 
+0

comme d'habitude dernière valeur enregistrée dans la base de données .. –