在 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')->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 中截断表格的主要内容,如果未能解决你的问题,请参考以下文章