web-dev-qa-db-ja.com

Laravel 5でテーブルを切り捨てます

説明:テストしたデータでいっぱいのテーブルがあります。時々、新しいデータのためにそれをクリアしたいです。 MySQL WorkBenchのようにDBMSアプリで切り捨てを実行できますが、代わりにアプリケーション内でそれを達成しようとしています。


目標:クリック時にデータベースのテーブルを切り捨てるボタンを作成します。


私の手順は次のとおりです。

1-ルートを宣言する

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

2-truncateVisitorController関数を作成します

_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()を使用するために何かを含める必要がありますか?

それに関するヒントは大歓迎です!

26
kyo

truncateメソッドはクエリビルダの一部です。ただし、Visitor::all()Collectionインスタンスを返します。次を使用してクエリを作成する必要があります。

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

以下も同様に機能するはずです、

Visitor::truncate();

38
nasirkhan

Laravel Docsから

https://laravel.com/docs/5.6/queries#deletes 言います:

テーブル全体を切り捨ててすべての行を削除し、自動インクリメントIDをゼロにリセットする場合は、truncateメソッドを使用できます。

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

18
Ryan

テーブルのモデルクラスがない場合の別の方法-Laravel 5.4

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