使用模型绑定Laravel 5.1销毁多个记录


Destroy Multiple Records With Model Binding Laravel 5.1

我遇到了用模型绑定销毁多个记录程序的问题,我有RouteServiceProvider.php

public function boot(Router $router)
{
  parent::boot($router);
  $router->model("offices","App'Office");
}

销毁方法是:(我返回$id只是为了检查):

public function destroy($id)
{
   //Office::destroy($id);
   return $id;
}

我的Url正在发送

<form id="delete_offices" accept-charset="UTF-8" action="http://localhost/public/offices/18,19" method="POST"><input type="hidden" value="DELETE" name="_method">
<input type="hidden" value="CXnq068rEYlu88gemilBZKh6f4ZL5p7cELmZoe4B" name="_token">
<button type="submit" id="btn_delete" class="btn btn-danger">Delete</button>
</form>

但当我看到控制器中返回的内容时,只返回一个对象:

{"id":18,"name":"Main",,"phone":"9784773366","email":"","schedule":"Monday-friday: 8am-6pm","country_id":147,"state_id":476,"city_id":1178,"created_at":"2016-05-08 17:22:04","updated_at":"2016-05-08 17:24:57"}

我该怎么办才能拥有包含所有信息的对象?,如果我发送id 18和19,我应该得到两个办公室,id为18的办公室信息和id为19的信息。如果我发送id 23,我应该只得到id为23的办公室的信息。

感谢

要覆盖Route::resource中的任何Route,您应该将其添加到资源中

Route::resource('office', 'OfficeController',
                ['except' => 'destroy']);

然后手动添加路由

这是我的解决方案。首先我有路线

Route::resource('office',OfficeController');

因此,这使得所有的REST路由,如GET、POST、PUT、PATCH和DELETE所有这些都使用通配符{office},例如

Route::get('office/{office}/edit','OfficeController@edit');
Route::delete('office/{office}', 'OfficeController@destroy);

所有路由都具有相同的通配符。因此,因为在routeServiceProvider中,我有:

$router->model("offices","App'Office");

我不得不一个接一个地重写路线,并删除路线

Route::delete('office/{office}', 'OfficeController@destroy);

更改为:

Route::delete('office/{id}', 'OfficeController@destroy);

这样我就可以得到我发送的ID,而不是Office Model。

如果您知道如何从Route::resource覆盖任何Route,效果会更好,并避免写入每条路由