说明:我有一个充满测试数据的表。有时候,我想清除它以添加新数据。我可以在DBMS应用程序(如MySQL WorkBench)中执行截断,但我尝试在我的应用程序中实现。
目标:创建一个在单击时截断数据库中表的按钮。
以下是我的步骤:
1 -宣告路由
Route::delete('visitor/truncate',array('as'=>'visitor.truncate', 'uses'=>'VisitorController@truncate'));
2 -在我的VisitorController
中建立truncate
函式
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()
是否需要包含任何内容?
任何关于这一点的提示都将非常感谢!
5条答案
按热度按时间krugob8w1#
下面的方法也可以工作,
Visitor::truncate();
kmpatx3s2#
truncate
方法是“查询建立器”的一部分。但是Visitor::all()
会传回Collection
例项。您必须使用下列方法建立查询:30byixjq3#
来自拉勒维尔的文件
https://laravel.com/docs/5.6/queries#deletes 说:
如果要截断整个表(这将删除所有行并将自动递增的ID重置为零),可以使用
truncate
方法:DB::table('users')->truncate();
个y53ybaqx4#
Laravel 8.0文档
https://laravel.com/docs/8.x/queries#delete-statements
使用查询生成器:
并配型号:
eivgtgni5#
另一种方法,如果你没有一个模型类的表- Laravel 5. 4