我的猜测是使用以下语法:

MyModel::all()->delete();

但这并没有起作用。我相信这是超级简单的,但我已经搜索了关于这个主题的文档,但找不到它!


当前回答

truncate的问题是它意味着立即提交, 因此,如果在事务中使用它,风险是您发现表为空。 最好的解决方案是使用删除

MyModel::query()->delete();

其他回答

有一种间接的方式:

myModel:where('anyColumnName', 'like', '%%')->delete();

例子:

User:where('id', 'like' '%%')->delete();

Laravel查询生成器信息:https://laravel.com/docs/5.4/queries

MyModel::all()->delete()不起作用的原因是all()实际上触发了查询并返回了Eloquent对象的集合。

你可以使用截断方法,这适用于Laravel 4和5:

MyModel::truncate();

这将从表中删除所有行,而不记录单个行删除。

在我的情况下,laravel 4.2删除所有行,但不截断表

DB:表(your_table) - > delete ();

在Laravel 3中完成此操作的最佳方法似乎是使用Fluent接口截断表,如下所示

DB::query("TRUNCATE TABLE mytable");

你可以使用Model::truncate()如果你禁用foreign_key_checks(我假设你使用MySQL)。

DB::statement("SET foreign_key_checks=0");
Model::truncate();
DB::statement("SET foreign_key_checks=1");