我的猜测是使用以下语法:
MyModel::all()->delete();
但这并没有起作用。我相信这是超级简单的,但我已经搜索了关于这个主题的文档,但找不到它!
我的猜测是使用以下语法:
MyModel::all()->delete();
但这并没有起作用。我相信这是超级简单的,但我已经搜索了关于这个主题的文档,但找不到它!
当前回答
简单的解决方案:
Mymodel::query()->delete();
其他回答
MyModel:: truncate ();
在准将队伍中:
PHP工匠修补匠
then
职位:截断();
在Laravel 3中完成此操作的最佳方法似乎是使用Fluent接口截断表,如下所示
DB::query("TRUNCATE TABLE mytable");
Laravel 5.2+解决方案。
Model::getQuery()->delete();
只需获取表名的底层构建器并做任何事情。 没有比这更整洁的了。
Laravel 5.6解决方案
\App\Model::query()->delete();
你也可以试试这条保留软删除的一行代码:
Model::whereRaw('1=1')->delete();
我不能使用Model::truncate(),因为它会出错:
SQLSTATE[42000]:语法错误或访问违规:1701不能截断外键约束中引用的表
不幸的是Model::delete()不起作用(至少在Laravel 5.0中):
非静态方法Illuminate\Database\Eloquent\Model::delete()不应该被静态调用,假设$this来自不兼容的上下文中
但这确实有效:
(new Model)->newQuery()->delete()
这将会软删除所有行,如果你设置了软删除的话。要完全删除所有行,包括软删除的行,您可以更改为:
(new Model)->newQueryWithoutScopes()->forceDelete()