web-dev-qa-db-fra.com

Comment supprimer un seul enregistrement dans Laravel 5?

Avec Laravel 5 J'essaie de supprimer un seul enregistrement dans un contrôleur.

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

Mon code de page d'affichage est:

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

Mon itinéraire est:

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

Cela n'a pas fonctionné.

Comment puis-je réparer la mise en œuvre?

7
Si Va

De l'officiel Laravel 5 documentations:

Supprimer un modèle existant

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

Suppression d'un modèle existant par clé

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

Dans tous les cas, le nombre entre parenthèses représente l'ID d'objet, mais vous pouvez également exécuter une requête delete sur un ensemble de modèles:

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

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

18
Luis González

Donc, le moyen de Laravel de supprimer en utilisant la fonction destroy est

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

Vous pouvez trouver un exemple ici http://laravel.com/docs/5.1/quickstart-intermediate#adding-the-delete-button Et votre itinéraire devrait ressembler à ceci:

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

Cela fonctionne avec par exemple: Route::resource('employee', 'EmployeeController'); et devrait également fonctionner avec la façon dont vous configurez votre route de destruction.

7
Saad

De toute évidence, vous avez un problème de routage. Vous essayez d'utiliser un verbe 'obtenir' pour atteindre un itinéraire défini avec un verbe 'supprimer'.

Si vous souhaitez utiliser une ancre pour supprimer un enregistrement, vous devez ajouter cet itinéraire:

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

ou continuez à utiliser un verbe supprimer, mais vous devez alors utiliser un formulaire (et non une ancre) avec un paramètre appelé _method et la valeur 'delete' indiquant que vous utilisez un verbe 'supprimer'.

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