2015-11-22 19 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'属性。 –

相关问题