2017-10-27 11 views
0

ソフト削除を使い始めたばかりなので、やり方は分かりません。私はちょうど誰かの例に従っていますが、適切なソフト削除方法はまだ分かりません。私が欲しいのは、personal_infoテーブルを削除することですが、何が間違っているのかわからないので、私は失われてしまうエラーメッセージが表示されないようにしています。おかげでたくさんのテーブル上のソフト削除

home.blade.php

<table class="table table-bordered"> 
     <tr> 
     <th><strong><big>Name: </big></strong></th> 
     <th><strong><big>Action </big></strong></th> 
     </tr> 
     <td> 
     <tr> 
     @foreach($data as $value) 
     <tr>  
     <th><a href="{{route('user.show',['id'=>$value->id])}}">{{$value->Name}}</a></th> 
     <th><form action="{{ url('/home/'.$value->id.'/delete') }}" method="post"> 
     <button>Delete</button> 
     </form></th>    
     </tr> 
     @endforeach 
     </tr> 
     </tr> 
    </table> 

コントローラー:

public function delete($id = 0){ 
    if ($id > 0){ 
     personal_info::destroy($id); 
    } 
    return redirect("/home"); 
} 

または私はそれがこのようにすればよいですか?モデルpersonal_info

public function delete($id){ 
$data = personal_info::find($id)->delete(); 
    return redirect("/home"); 
} 

use Illuminate\Database\Eloquent\Model; 

use Eloquent; 
use SoftDeletes; 
class personal_info extends Eloquent 
{ 
    protected $fillable = array('Name'); 
    protected $table = 'personal_infos'; 
    protected $primaryKey = 'id'; 
    protected $dates = ['deleted_at']; 
     public function user_info1s() { 
     return $this->hasMany('App\user_info1','user_id'); 
    } 

ルート:(わからない、私が代わりにDELETEを使用する必要があります)

Route::get('/home/{id}/delete', '[email protected]'); 

enter image description here

+0

ソフト削除を使用するとタイムスタンプで作業するので、基本的にデータベースレコードをソフトに削除すると、特定のレコード 'deleted_at'フィールドにタイムスタンプが与えられ、フロントエンドでデータをループアウトすると、 'where delete_at === NULL'のようなものです。 –

+0

しかし、私が行ったすべてのリソースでタイムスタンプを与えるには、これだけでした。 "$ table-> softDeletes();" @WesMurray – blastme

+0

私はちょうどwhere句 "personal_info :: findOrFail($ id) - >( 'deleted_at'、 '='、NULL) - > delete();を使いました。 @WesMurray – blastme

答えて

1

方法で削除を使用する必要はありません。この

public function delete($id){ 
    personal_info::findOrFail($id)->delete(); 
    return back(); 
} 

編集

にあなたの関数を変更しようとするルート方法とフォームメソッドは同じでなければなりません。

1

変更

Route::get('/home/{id}/delete', '[email protected]'); 

Route::post('/home/{id}/delete', '[email protected]'); 

コントローラへのメソッド

use Carbon\Carbon; 

public function delete($id) 
{ 
    personal_info::find($id)->update([ 
     'deleted_at' => Carbon::now() 
    ]); 

    return redirect()->back(); 
} 

home.blade.php

<table class="table table-bordered"> 
     <tr> 
     <th><strong><big>Name: </big></strong></th> 
     <th><strong><big>Action </big></strong></th> 
     </tr> 
     <td> 
     <tr> 

     // Example of adjusting your query to support soft deletes 
     @php 
      $data = Some\Model::whereNotNull('deleted_at')->get(); 
     @endphp 

     @foreach($data as $value) 
     <tr>  
     <th><a href="{{route('user.show',['id'=>$value->id])}}">{{$value->Name}}</a></th> 
     <th><form action="{{ url('/home/'.$value->id.'/delete') }}" method="post"> 
     <button>Delete</button> 
     </form></th>    
     </tr> 
     @endforeach 
     </tr> 
     </tr> 
    </table> 
+0

これは" Carbon \ Carbonを使用する "と説明できますか? – blastme

+0

か、これはあなたが使用した例ですか? – blastme

+0

DateTime用のシンプルなPHP API拡張です。 –

関連する問題