2017-10-20 20 views
0

Je ne peux plus sembler mettre à jour mon utilisateur et ma table d'école mais j'ai pu mettre à jour la table de passe-temps maintenant.Modèle ne pas mettre à jour laravel

Keep getting error: implode(): Invalid arguments passed when updating data -> créant un lien à la question avant

Controller:

 //update for user 
     public function edit($id){ 
      $object = user::find($id); 

      return view('edit', compact('object')); 

     } 

     public function update(Request $request, $id){ 
      $object  = user::find($id); 
      $object->Name = $request->input('Name'); 

      $object->update(); 

      return redirect('/home'); 
     } 

     //update for Schools table 
     public function edit1($id){ 
      $object2 = school::find($id); 

      return view('edit1', compact('object2')); 
     } 

     public function update1(Request $request, $id){ 
      $object2 = school::find($id); 

      $test   = array(); 
      $test['School'] = implode(' , ', $request->School); 
      $test['SDate'] = implode(' , ', $request->SDate); 
      $test['EDate'] = implode(' , ', $request->EDate); 

      $object2->update($test); 
      return redirect('/home'); 
     } 

     // The error starts here after putting this whole thing in. 
     // (I tried putting it into another separate controller but the error 
     // still continues) 
     public function edit2($id) { 
      $object3 = hobby::find($id); 

      return view('edit2', compact('object3')); 
     } 

     public function update2(Request $request, $id){ 
      $object3 = hobby::find($id); 

      $test2     = array(); 
      $reading_book   = (array)$request->reading_book; 
      $test2['reading_book'] = implode(' , ',$reading_book); 
      $computer_game   = (array)$request->computer_game; 
      $test2['computer_game'] = implode(' , ',$computer_game); 

      $object3->update($test2); 

      return redirect('/home'); 
     } 

modèle Hobby:

<?php 

    namespace App; 

    use Illuminate\Database\Eloquent\Model; 
    use Eloquent; 

    class hobby extends Eloquent 
    { 
     protected $fillable = array('reading_book','computer_game','user_id'); 

     public function users() { 
      return $this->belongsTo('App\user, 'user_id', 'id'); 
     } 
    } 

Itinéraire: (actuellement en utilisant ces derniers pour la mise à jour)

Route::get('/user/show/{id}/edit', '[email protected]'); 
Route::put('/user/show/{id}','[email protected]'); 


Route::get('/user/show/{id}/edit1', '[email protected]'); 
Route::put('/user/show/{id}','[email protected]'); 


Route::get('/user/show/{id}/edit2', '[email protected]'); 
Route::put('/user/show/{id}','[email protected]'); 
+0

Pouvez-vous nous montrer l'itinéraire que vous utilisez? – phaberest

+0

Y a-t-il des erreurs? – Maraboc

+0

Avez-vous trouvé la réponse à votre question précédente? [Continuer à obtenir l'erreur: implode(): arguments non valides passés lors de la mise à jour des données] (https://stackoverflow.com/questions/46845065/keep-getting-error-implode-invalid-arguments-passed-when-updating-data/46845303 ? noredirect = 1 # comment80638799_46845303) – ljubadr

Répondre

5

Le problème est sur vos itinéraires:

Route::put('/user/show/{id}','[email protected]'); 

Route::put('/user/show/{id}','[email protected]'); 

Route::put('/user/show/{id}','[email protected]'); 

C'est la même route pour trois méthodes.

Juste pour tester, vous pouvez le faire:

Route::put('/user/show/{id}','[email protected]'); 

Route::put('/user/showupdate1/{id}','[email protected]'); 

Route::put('/user/showupdate2/{id}','[email protected]'); 

Et le changement dans la vue que cela fonctionne parfaitement :)

+0

Mais je mets tout cela dans méthode différente, donc il ne devrait pas encore du travail? parce que les 2 premières mises à jour et update2 fonctionnent maintenant. Attendez, laissez-moi essayer – blastme

+0

@blastme Comment peut-il savoir quelle route vous voulez accéder si vous appelez tout de la même manière? – phaberest

+0

Ce sera un comportement aléatoire je pense – Maraboc