supprimer mysql avec laravel

J'ai besoin de supprimer des informations de la base de données via un post de soumission. Mais il met à jour et ne supprime pas les informations.

Route:

Route::get('/home', '[email protected]')->name('home');
Route::post('/home/linha/insert', '[email protected]')->name('home');
Route::post('/home/linha/remove','[email protected]');

Manette:

    public function deletar(Request $request)
{


    $id = $request->input('id');

     DB::delete('delete from linha where id = :id' ,['id' => $id]);


      return redirect('home');


}

Vue:

<div class="col-md-9" style="margin-top:20px;">
    <div class="col-md-9"><?php echo "$linha->msg"; ?></div>
    @if($linha->iduser == auth()->user()->id)
    <div class="col-md-3"><form action="/home/linha/remove" method="post">
        {{ csrf_field() }}
        <input type="hidden" name="id" id="id" value="{{$linha->id}}">
       <button type="submit" class="btn btn-danger btn-sm">
           Remover 
        </button>
        </form>
        </div>@endif
</div>
0
@TharakaDilshan qui ne fonctionnera pas si la méthode du formulaire est définie sur POST
ajouté l'auteur Nico Haase, source
Qu'avez-vous essayé de résoudre le problème? Il n'y a pas de code donné pour mettre à jour quoi que ce soit. De plus, la documentation Eloquent montre une autre notation pour la suppression de modèles.
ajouté l'auteur Nico Haase, source
Définissez votre route comme Route :: delete ('/ home/linha/remove', 'HomeController @ deletar') & zwnj;;
ajouté l'auteur Tharaka Dilshan, source
Vous devez poser votre question en anglais sur ce site. Veuillez consulter meta.stackexchange.com/q/13676 .
ajouté l'auteur misorude, source

5 Réponses

Il existe plusieurs façons de supprimer des enregistrements dans la base de données (votre requête ne contient pas d'erreur de syntaxe)

suivez cette déclaration pour le débogage

you should use dd(DB::getQueryLog()); and you get raw query & execute this raw query in database manually

1ère voie (par éloquent)

$linha= linha::find($id);
$linha->delete();

2ème voie

DB::table('linha')->where('id', '=', $id)->delete();

3ème voie

DB::delete('SQL QUERY HERE');

for more information read laravel delete manual

1
ajouté
@Noscin j'ai mis à jour ma réponse, vous devriez utiliser la 2ème voie et suivre mes instructions en haut de la réponse pour le débogage
ajouté l'auteur Bilal Ahmed, source
1ª $ id = $ request-> input ('id'); $ linha = DB :: find ($ id); $ linha-> delete ();
ajouté l'auteur Noscin, source

Tu pourrais essayer ça

public function deletar(Request $request){

    $id = $request->input('id');
    if( \DB::table('linha')->where('id', $id)->delete() ){
       //deleted successfully
    }

    return redirect('home');
}
0
ajouté
Comme la collection est vide, cela signifie qu'il n'y a pas d'entrées correspondantes dans votre table de base de données "linha" correspondant à cet identifiant. Qu'en est-il de dd ($ request-> id); ?
ajouté l'auteur Sreejith BS, source
Quelle est la sortie de dd (\ DB :: table ('linha') -> où ('id', $ id) -> get ()); ?
ajouté l'auteur Sreejith BS, source
Demande-> id = "1"
ajouté l'auteur Noscin, source
Collection {# 284 ▼ ​​#items: []}
ajouté l'auteur Noscin, source
J'ai essayé et c'est arrivé la même chose, mettre à jour mais pas supprimer.
ajouté l'auteur Noscin, source

Je pense que ça doit être comme ça:

 DB::delete('delete from linha where id = ?' ,[$id]);

C'est juste la syntaxe.

Alternativement, vous pouvez utiliser cette ligne:

 DB::table('linha')->where('id', $id)->delete();
0
ajouté
Option 2, actualisez la page.
ajouté l'auteur Noscin, source
J'ai essayé et c'est arrivé la même chose, mettre à jour mais pas supprimer.
ajouté l'auteur Noscin, source

essayer

DB::table('linha')->where('id', $id)->delete();
0
ajouté
Êtes-vous sûr qu'il y a des données dans la table?
ajouté l'auteur Mayuri Pansuriya, source
Donc, vous devez déboguer cela dans votre fichier de lame
ajouté l'auteur Mayuri Pansuriya, source
Cela a fonctionné mais j'ai vu que cela n'obtient pas le bon identifiant d'entrée. Tout le monde retourne id 1
ajouté l'auteur Noscin, source
Oui, car il montre des enregistrements dans une rangée d'articles.
ajouté l'auteur Noscin, source
J'ai essayé et c'est arrivé la même chose, mettre à jour mais pas supprimer.
ajouté l'auteur Noscin, source

Essayez ceci: Il a également été montré dans la documentation de Laravel.

$deleted = DB::delete('delete from linha where id = ?',[$id]);

Voici le lien vers la documentation ( https://laravel.com/docs/5.7/database ). .

Ou vous pouvez utiliser laravel éloquent "linha"

$request->YourModel()->findOrFail($id)->delete();

0
ajouté
Cela a fonctionné mais j'ai vu que cela n'obtient pas le bon identifiant d'entrée. Tout le monde retourne id 1.
ajouté l'auteur Noscin, source
Je mets dd ($ supprimé); et répond 0.
ajouté l'auteur Noscin, source
Je l'ai déjà testé, il ne renvoie pas d'erreur juste à partir d'une actualisation de la page.
ajouté l'auteur Noscin, source
Voulez-vous s'il vous plaît laissez-moi savoir quelle erreur cela vous a donné?
ajouté l'auteur Hareen, source
cela signifie qu'il n'y a aucune action effectuée. Avez-vous des données dans cette table? Pouvez-vous s'il vous plaît faire dd ($ request-> input ('id')); et qu'est-ce qui me permet de savoir ce que vous obtenez?
ajouté l'auteur Hareen, source