截断Laravel 5

时间:2015-10-10 13:51:12

标签: php laravel laravel-5 eloquent

说明:我有一张充满测试数据的表格。有时,我想清除它以获取新数据。我可以在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()的内容?

任何提示都将非常感谢!

5 个答案:

答案 0 :(得分:36)

以下内容也应该有效,

Visitor::truncate();

答案 1 :(得分:33)

truncate方法是查询构建器的一部分。但是Visitor::all()会返回Collection个实例。您需要使用以下内容构建查询:

Visitor::query()->truncate();

答案 2 :(得分:14)

来自Laravel Docs

https://laravel.com/docs/5.6/queries#deletes说:

  

如果要截断整个表,将删除所有行   并将自动递增ID重置为零,您可以使用truncate   方法:

     

DB::table('users')->truncate();

答案 3 :(得分:3)

Laravel 8.0 文档

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();