2016-09-19 8 views
0

Fragen hasmany Antworten.
Antworten hasmany Kommentare.
Kommentare hasmany Abstimmungen.
Antworten hasmany Abstimmungen.Löschen der Datensätze aus allen Beziehungen Tabelle

Jetzt, wenn ich eine Frage lösche, möchte ich die Frage zusammen mit ihren Antworten, und alle Kommentare und Stimmen auf der Antwort gelöscht werden. Was ich getan habe, sieht nicht so elegant aus.

$question=Question::where(['id'=>$request->id])->first(); 
    $answers=Answer::where(['q_id'=>$request->id])->get(); 
    foreach($answers as $answer) 
    { 
      $comments=Comment::where(['answer_id'=>$answer->id])->get(); 
      foreach($comments as $comment) 
      { 
       $votes=vote::where(['votable_id'=>$answer->id]) 
          ->orWhere(['votable_id'=>$comment->id]) 
          ->get(); 
       foreach($votes as $vote) 
       { 
        $vote->delete(); 
       } 

        $comment->delete(); 
      } 

       $answer->delete(); 
    } 
    $question->delete(); 

Antwort

0

Sie können Laravels oberservers dafür verwenden. So Ihre Löschen Methoden könnte wie folgt aussehen

public function deleting(Question $user) 
{ 
    $question->answers()->delete(); 

    // Etc. 
} 

Ich hoffe, Sie bekommen die Idee.

0

Sie können die Boot-Methode in Ihrem Modell zum Zeitpunkt der Löschung verwenden.
Es werden alle Daten des Beziehungsmodells gelöscht.

In Ihrem Fragenmodell benötigen Sie Beziehungsfunktionen für Antworten, Kommentare und Abstimmungen.

Jetzt können Sie diese verwenden.,

protected static function boot() 
    { 
     parent::boot(); 
     static::deleting(function ($question) { 
     $question->answers()->delete(); 
     $question->comments()->delete(); 
     $question->votes()->delete(); 
     }); 
    }   

Die Beziehung gemeinsame Mock ist,

public function name()   
    { 
     return $this->hasMany('App/name', 'fk_id', 'p_id'); 
    }   

Wenn Ihr Löschen Frage Controller wie gewohnt und es wird Antwort, Kommentare und Stimmen auch löschen .

$question = Question::all()->delete(); 

Alle Zweifel in Beziehung, diese verwenden für laravel 5.2 relationship

beziehen
Verwandte Themen