在 Laravel 5 中截断表格

Posted

技术标签:

【中文标题】在 Laravel 5 中截断表格【英文标题】:Truncate a table in Laravel 5 【发布时间】:2016-01-08 08:56:48 【问题描述】:

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


目标:制作一个按钮以在单击时截断数据库中的表。


这是我的步骤:

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

对此的任何提示将不胜感激!

【问题讨论】:

【参考方案1】:

Laravel 8.0 文档

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

使用查询生成器:

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

和模型:

User::truncate();

【讨论】:

【参考方案2】:

来自 Laravel 文档

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

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

DB::table('users')-&gt;truncate();

【讨论】:

如果您的表没有专用模型类(例如链接表),此解决方案更易于使用【参考方案3】:

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

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

【讨论】:

【参考方案4】:

以下应该也可以,

Visitor::truncate();

【讨论】:

【参考方案5】:

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

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

【讨论】:

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

以上是关于在 Laravel 5 中截断表格的主要内容,如果未能解决你的问题,请参考以下文章

markdown 在Laravel 5.7种子文件中截断具有外键约束的表。

使用 eloquent 截断 laravel 中的所有表

Laravel Eloquent 对象,长文本被截断

在 laravel 5 的表格中显示寄存器数量

laravel 5.4 导出excel表格

在 Laravel 5.5 中使用 Typeahead.js 使用两个表格列进行自动完成搜索