Laravel Eloquent 通过 id 删除

新手上路,请多包涵

我正在尝试通过 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。所以那部分确实有效。

原文由 Sam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 365
2 个回答

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

相反,您必须先找到模型,然后调用 delete 就可以了:

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

原文由 Joseph Silber 发布,翻译遵循 CC BY-SA 3.0 许可协议

这在 Laravel 5.6 中使用 destroy 方法是可能的:

文档

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

App\Model::destroy(1);

或者删除一个 id 数组:

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

或查询:

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

原文由 toing_toing 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏