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

时间:2016-05-08 20:08:26

标签: php laravel laravel-5.1

我有这个问题用模型绑定来销毁多个recor, 我有 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;
}

我的网址正在发送

<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,我应该获得2个办公室,ID为18的办公室信息和ID为19的信息。如果我发送id 23我应该只获得id = 23的办公室信息。

由于

2 个答案:

答案 0 :(得分:1)

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

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

然后只需添加路线manualy

答案 1 :(得分:0)

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

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

因此,这将使所有REST路由如GET,POST,PUT,PATCH和DELETE 全部使用Wildcard {office}, 例如,

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

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

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

我必须逐个重写路线和DELETE ROUTE

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

将其更改为:

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

这样我就会收到我发送的ID,而不是Office模型。

如果您知道如何覆盖Route中的任何Route::resource,那么会更好并避免编写每条路线