我的猜测是使用以下语法:
MyModel::all()->delete();
但这并没有起作用。我相信这是超级简单的,但我已经搜索了关于这个主题的文档,但找不到它!
我的猜测是使用以下语法:
MyModel::all()->delete();
但这并没有起作用。我相信这是超级简单的,但我已经搜索了关于这个主题的文档,但找不到它!
当前回答
MyModel::all()->delete()不起作用的原因是all()实际上触发了查询并返回了Eloquent对象的集合。
你可以使用截断方法,这适用于Laravel 4和5:
MyModel::truncate();
这将从表中删除所有行,而不记录单个行删除。
其他回答
在我的情况下,laravel 4.2删除所有行,但不截断表
DB:表(your_table) - > delete ();
我在种子文件中看到过这两种方法。
// Uncomment the below to wipe the table clean before populating
DB::table('table_name')->truncate();
//or
DB::table('table_name')->delete();
即使你不能使用第一个,如果你想设置外键。
不能截断外键约束中引用的表
所以用第二个可能是个好主意。
truncate的问题是它意味着立即提交, 因此,如果在事务中使用它,风险是您发现表为空。 最好的解决方案是使用删除
MyModel::query()->delete();
你可以使用Model::truncate()如果你禁用foreign_key_checks(我假设你使用MySQL)。
DB::statement("SET foreign_key_checks=0");
Model::truncate();
DB::statement("SET foreign_key_checks=1");
MyModel:: truncate ();
在准将队伍中:
PHP工匠修补匠
then
职位:截断();