ihue ihue - 1 month ago 8
PHP Question

Truncate a table in Laravel 5

Description : I have a table full of tested data. Sometimes, I want to clear it out for new data. I can perform the truncate in the DBMS App like MySQL WorkBench, but I'm trying to achieve it within my application instead.




Goal : to make a button to truncate a table in a database when on click.




Here are my steps :

1 - Declare a route

Route::delete('visitor/truncate',array('as'=>'visitor.truncate', 'uses'=>'VisitorController@truncate'));





2 - Create a
truncate
function in my
VisitorController


public function truncate()
{

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

return View::make('visitors.index')
->with('success', 'Truncate Done');
}





3 - Create a button on my view

{!! 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 - Test

When I click on it, it get into my
truncate()
function in my controller, but I keep getting this error


Call to undefined method Illuminate\Database\Eloquent\Collection::truncate()





Do I need include anything to use
truncate()
?

Any hints on that will be much appreciated !

Answer

The truncate method is part of the Query Builder. However Visitor::all() returns a Collection instance. You need to build the query using the following:

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