截断Laravel 5中的表格

kyo*_*kyo 27 php laravel eloquent laravel-5

描述:我有一个充满测试数据的表.有时,我想清除它以获取新数据.我可以像DB WorkBench一样在DBMS应用程序中执行截断,但我正在尝试在我的应用程序中实现它.


目标:在单击时创建一个按钮以截断数据库中的表.


这是我的步骤:

1 - 申报路线

Route::delete('visitor/truncate',array('as'=>'visitor.truncate', 'uses'=>'VisitorController@truncate'));
Run Code Online (Sandbox Code Playgroud)

2 - truncate在我的中创建一个函数VisitorController

public function truncate()
{

    $visitors = Visitor::all();
    $visitors ->truncate();

    return View::make('visitors.index')
        ->with('success', 'Truncate Done');
}
Run Code Online (Sandbox Code Playgroud)

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()!!}
Run Code Online (Sandbox Code Playgroud)

4 - 测试

当我点击它时,它进入truncate()我的控制器中的功能,但我不断收到此错误

调用未定义的方法Illuminate\Database\Eloquent\Collection :: truncate()


我需要包含任何东西truncate()吗?

任何提示将非常感谢!

Bog*_*dan 43

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

Visitor::query()->truncate();
Run Code Online (Sandbox Code Playgroud)

  • 您可以直接使用Visitor :: truncate(),它将在内部调用查询生成器的truncate()方法。 (2认同)

nas*_*han 39

以下应该也可以,

Visitor::truncate();


Rya*_*yan 21

来自Laravel Docs

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

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

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


itz*_*nsn 6

如果您没有表格的模型类,另一种方式 - Laravel 5.4

DB:connection(database connection name)->table(table name)->truncate();
Run Code Online (Sandbox Code Playgroud)


Jso*_*owa 5

Laravel 8.0 文档

https://laravel.com/docs/8.x/queries#delete-statements

使用查询构建器:

DB::table('users')->truncate();
Run Code Online (Sandbox Code Playgroud)

并与模型:

User::truncate();
Run Code Online (Sandbox Code Playgroud)