Laravel Eloquent由id删除

时间:2015-09-16 18:20:53

标签: php laravel

我正在尝试按ID删除单个记录。相反,它会删除该表中的所有记录。

这是我的代码:

查看

<form role="form" action="{{ route('status.delete', ['statusId' => $status->id]) }}" method="post">
    <button type="submit" class="btn btn-default"><i class="fa fa-times"></i> Delete</button>
    <input type="hidden" name="_token" value="{{ Session::token() }}">
</form>

路线

Route::post('/status/{statusId}/delete', [
    'uses' => '\Dashboard\Http\Controllers\StatusController@deleteStatus',
    'as' => 'status.delete',
    'middleware' => ['auth'],
]);

控制器

public function deleteStatus(Request $request, $statusId)
{
    Auth::user()->statuses()->delete($statusId);

    return redirect()->route('home')->with('success', 'Post deleted.');
}

注意:当我dd($statusId)时,它确实为我正在删除的状态提供了正确的ID。这部分确实有效。

2 个答案:

答案 0 :(得分:7)

不幸的是,Eloquent构建器不支持将id传递给delete

相反,您必须首先找到模型,然后在其上调用delete

$request->user()->statuses()->findOrFail($statusId)->delete();

答案 1 :(得分:1)

在Laravel 5.6中,可以使用destroy方法:

来自docs

  

但是,如果您知道模型的主键,则可以删除   模型而不检索它。为此,请调用destroy方法

App\Model::destroy(1);

或删除ID数组:

App\Model::destroy([1, 2, 3]);

或通过查询

App\Model::where('active', 0)->delete();