2015-11-22 34 views
1

我在laravel 5中有一個休息API設置。前端是AngularJS。我有點困惑,在用戶選擇使用ui-select的多個項目後,如何將它保存到數據庫中。AngularJS:如何推送多個選定的項目並保存到數據庫中

問題

1 - 我應該如何選擇數據發送到API?

2- Laravel:如何更新多個現有的記錄。

現在我知道laravel開箱即用saveMany()。但問題仍然是如何做到這一點?

我找不到任何我可以從中受益的資源。有人請幫助我。

+0

的Laravel文檔做大量的工作,並給出瞭如何挽救許多例子/附上相關雄辯車型:http://laravel.com/docs/5.1/eloquent-relationships –

+0

AngularJS部分:$ HTTP] (https://docs.angularjs.org/api/ng/service/$http)和[$ resource](https://docs.angularjs.org/api/ngResource/service/$resource)服務。 –

+0

@SharikovVladislav我有一切設置。我知道$ http是如何工作的但只是想知道應該如何將選定的數據推送到AP i – user3641381

回答

0

你有兩個部分。您必須將AngularJS的AJAX請求發送到由Laravel實施的API。

AngularJS部分

您需要$http service使AJAX請求。您需要$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 
    }); 
}]); 

Laravel部分:

您需要創建路線:

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

你也需要實現你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

很棒!謝謝! – user3641381

+0

您能解釋一下您的意思嗎?$ jsonArray = $ input-> data;' – user3641381

+0

您在您的JSON對象中有_some_結構。你用'(object)Input :: all()'把它放到'$ input'中。然後通過'$ input-> data'訪問這個對象的'data'屬性。 –

相關問題