说明:我有一张充满测试数据的表格。有时,我想清除它以获取新数据。我可以在DBMS应用程序中执行截断,如 MySQL WorkBench ,但我试图在我的应用程序中实现它。
目标:在点击时创建一个截断数据库中表格的按钮。
以下是我的步骤:
1 - 声明路线
Route::delete('visitor/truncate',array('as'=>'visitor.truncate', 'uses'=>'VisitorController@truncate'));
2 - 在我的truncate
VisitorController
功能
public function truncate()
{
$visitors = Visitor::all();
$visitors ->truncate();
return View::make('visitors.index')
->with('success', 'Truncate Done');
}
3 - 在我的视图上创建一个按钮
{!! Form::model($visitors, array( 'route' => array('visitor.truncate'),'method' => 'DELETE')) !!}
<button type="submit" class="btn bgm-red btn-float waves-effect waves-effect waves-button waves-float"><i class="md md-remove"></i></button>
{!! Form::close()!!}
4 - 测试
当我点击它时,它进入我控制器中的truncate()
功能,但我一直收到此错误
调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: truncate()
我是否需要包含任何可以使用truncate()
的内容?
任何提示都将非常感谢!
答案 0 :(得分:36)
以下内容也应该有效,
Visitor::truncate();
答案 1 :(得分:33)
truncate
方法是查询构建器的一部分。但是Visitor::all()
会返回Collection
个实例。您需要使用以下内容构建查询:
Visitor::query()->truncate();
答案 2 :(得分:14)
https://laravel.com/docs/5.6/queries#deletes说:
如果要截断整个表,将删除所有行 并将自动递增ID重置为零,您可以使用
truncate
方法:
DB::table('users')->truncate();
答案 3 :(得分:3)
https://laravel.com/docs/8.x/queries#delete-statements
使用查询构建器:
DB::table('users')->truncate();
和模型:
User::truncate();
答案 4 :(得分:2)
另一种方法,如果你没有表的模型类 - Laravel 5.4
DB:connection(database connection name)->table(table name)->truncate();