在Laravel 5中截断表

ukqbszuj  于 2022-11-18  发布在  其他
关注(0)|答案(5)|浏览(148)

说明:我有一个充满测试数据的表。有时候,我想清除它以添加新数据。我可以在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()是否需要包含任何内容?
任何关于这一点的提示都将非常感谢!

krugob8w

krugob8w1#

下面的方法也可以工作,
Visitor::truncate();

kmpatx3s

kmpatx3s2#

truncate方法是“查询建立器”的一部分。但是Visitor::all()会传回Collection例项。您必须使用下列方法建立查询:

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

30byixjq3#

来自拉勒维尔的文件
https://laravel.com/docs/5.6/queries#deletes 说:
如果要截断整个表(这将删除所有行并将自动递增的ID重置为零),可以使用truncate方法:
DB::table('users')->truncate();

y53ybaqx

y53ybaqx4#

Laravel 8.0文档

https://laravel.com/docs/8.x/queries#delete-statements
使用查询生成器:

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

并配型号:

User::truncate();
eivgtgni

eivgtgni5#

另一种方法,如果你没有一个模型类的表- Laravel 5. 4

DB::connection(database connection name)->table(table name)->truncate();

相关问题