web-dev-qa-db-ja.com

Laravel 5?で単一のレコードを削除するには?

Laravel 5を使用して、コントローラー内の単一のレコードを削除しようとしています。ここに私のコードがあります。

public function destroy($id)
{
     $employee = Employee::find($id);
     $employee->delete();
     return Redirect::route('noorsi.employee.index');
}

私のビューページコードは次のとおりです。

<td><a href="employee/{{$employee->id}}/destroy" class="btn btn-default">Delete</a></td>

私のルートは:

Route::delete(employee.'/{id}', array('as' => 'noorsi.employee.destroy','uses' => Employeecontroller.'@destroy'));

それはうまくいきませんでした。

実装を修正するにはどうすればよいですか?

7
Si Va

公式Laravel 5ドキュメントから:

既存のモデルを削除します

$user = User::find(1);
$user->delete();

キーによる既存モデルの削除

User::destroy(1);
User::destroy([1, 2, 3]);
User::destroy(1, 2, 3);

どの場合でも、括弧内の数字はオブジェクトIDを表しますが、モデルのセットに対してdeleteクエリを実行することもできます

$affectedRows = User::where('votes', '>', 100)->delete();

http://laravel.com/docs/5.0/eloquent#insert-update-delete

24
Luis González

したがって、destroy関数を使用して削除するLaravelの方法は

_<form action="{{ url('employee' , $employee->id ) }}" method="POST">
    {{ csrf_field() }}
    {{ method_field('DELETE') }}
    <button>Delete Employee</button>
</form>
_

ここに例を見つけることができます http://laravel.com/docs/5.1/quickstart-intermediate#adding-the-delete-button そしてあなたのルートこのように見えるはずです

_Route::delete('employee/{id}', array('as' => 'employee.destroy','uses' => 'Employeecontroller@destroy'));
_

Eg:Route::resource('employee', 'EmployeeController');で動作し、破壊ルートの設定方法でも動作するはずです。

10
Saad

明らかに、ルーティングに問題があります。 「get」動詞を使用して、「delete」動詞で定義されたルートに到達しようとしています。

アンカーを使用してレコードを削除する場合は、次のルートを追加する必要があります。

Route::get('/employee/{id}/destroy', ['uses' => 'EmployeeController@destroy']);

または、削除動詞を使用し続けますが、「削除」動詞を使用していることを示す_methodおよび値'delete'というパラメーターを持つフォーム(アンカーではない)を使用する必要があります。

2
Amarnasan
  Route::get('/showcon/{del_id}/delete','MainController@deletemsg');
  public function deletemsg($del_id){

  $mail=Mail::find($del_id);

  $mail->delete($mail->id);

  return redirect()->back(); 
  }

  <a href="showcon/{{$m->id}}/delete">del</a>
1
loqman chookili