説明:テストしたデータでいっぱいのテーブルがあります。時々、新しいデータのためにそれをクリアしたいです。 MySQL WorkBenchのようにDBMSアプリで切り捨てを実行できますが、代わりにアプリケーション内でそれを達成しようとしています。
目標:クリック時にデータベースのテーブルを切り捨てるボタンを作成します。
私の手順は次のとおりです。
1-ルートを宣言する
_Route::delete('visitor/truncate',array('as'=>'visitor.truncate', 'uses'=>'VisitorController@truncate'));
_
2-truncate
にVisitorController
関数を作成します
_public function truncate()
{
$visitors = Visitor::all();
$visitors ->truncate();
return View::make('visitors.index')
->with('success', 'Truncate Done');
}
_
-ビューにボタンを作成する
_ {!! 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()
を使用するために何かを含める必要がありますか?
それに関するヒントは大歓迎です!
truncate
メソッドはクエリビルダの一部です。ただし、Visitor::all()
はCollection
インスタンスを返します。次を使用してクエリを作成する必要があります。
Visitor::query()->truncate();
以下も同様に機能するはずです、
Visitor::truncate();
https://laravel.com/docs/5.6/queries#deletes 言います:
テーブル全体を切り捨ててすべての行を削除し、自動インクリメントIDをゼロにリセットする場合は、
truncate
メソッドを使用できます。
DB::table('users')->truncate();
テーブルのモデルクラスがない場合の別の方法-Laravel 5.4
DB:connection(database connection name)->table(table name)->truncate();