2015-11-22 1 views
1

J'ai une configuration d'api de repos dans laravel 5. La partie frontale est AngularJS. Je suis un peu confus sur la façon de, après que l'utilisateur sélectionne plusieurs éléments en utilisant ui-select, pour enregistrer cela dans la base de données.AngularJS: comment pousser plusieurs éléments sélectionnés et les sauvegarder dans la base de données

Questions

1- Comment dois-je envoyer les données sélectionnées dans l'API?

2- Laravel: comment mettre à jour plusieurs enregistrements existants.

Maintenant, je sais laravel a saveMany() sortie de la boîte. Mais la question reste sur comment faire cela?

Je n'ai trouvé aucune ressource dont je peux bénéficier. Est-ce que quelqu'un pourrait m'aider s'il vous plaît.

+0

Les Laravel Docs font un excellent travail et donner de nombreux exemples de la façon de sauver/attach modèles Eloquent liés: http://laravel.com/docs/5.1/eloquent-relationships –

+0

AngularJS partie: [http $] (https://docs.angularjs.org/api/ng/service/$http) et [$ resource] (https://docs.angularjs.org/api/ngResource/service/$resource) services. –

+0

@SharikovVladislav J'ai tout configuré. Je sais comment $ http fonctionne mais je me demandais comment je devrais pousser les données sélectionnées dans l'AP i – user3641381

Répondre

0

Vous avez deux parties. Vous devez envoyer une requête AJAX d'AngularJS à votre API, implémentée par Laravel.

AngularJS partie

Vous devez $http service faire la demande AJAX. Vous avez besoin $http.post:

var module = angular.module('myApp', []); 
module.controller('myCtrl', ['$http', function ($http) { 
    var someArray = [{id: 1, name: 'name1'}, {id: 2, name: 'name2'}]; 
    $http.post('/api/entities/batchUpdate', {data: someArray}).success(function (data) { 
    // handle response there 
    }); 
}]); 

partie Laravel:

Vous devez créer la route:

Route::put('entities/batchUpdate' , array('uses' => '[email protected]')); 

vous devez également implémenter la méthode pour vous contrôleur MyCtrl.

public function batchEntitiesUpdate() 
{ 
    $input = (object)Input::all(); 
    $jsonArray = $input->data; 
    foreach ($jsonArray as $item) { 
     $item = (object) $item; 

     $entity = Entity::find($item->id) 
     $entity->name = $item->name; 
     $entity->save(); 
    } 

    /* return return some response */ 
} 
+0

Merveilleux !! Je vous remercie! – user3641381

+0

Pourriez-vous expliquer ce que vous voulez dire par '$ jsonArray = $ input-> data;' – user3641381

+0

Vous avez _some_ structure dans votre objet JSON. Vous le mettez dans '$ input' par' (objet) Input :: all() '. Puis par '$ input-> data' vous accédez à la propriété' data' de cet objet. –