2016-05-02 3 views
-1

Ich bekomme diese Fehlermeldung:Löschfunktion in Laravel funktioniert nicht mehr? SQL-Fehler: Kann nicht löschen oder eine übergeordnete Zeile aktualisieren: ein Fremdschlüssel nicht

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (Laravel . comments , CONSTRAINT comments_ibfk_2 FOREIGN KEY (thread_id) REFERENCES threads (id)) (SQL: delete from threads where id = 191)

Das ist angezeigt, wenn ich versuche, einen Thread zu löschen. Ich verstehe nicht wirklich warum, weil die Löschfunktion die ganze Zeit funktioniert hat. Ich weiß jetzt nicht, wie dieser Fehler auftritt, aber ich kann mir nicht vorstellen, dass da etwas mit meiner Datenbank ist. Ich hatte schon einmal diesen Fehler, aber der Fehler war in meinem Code, nicht in SQL.

seine dazu hier:

<ul class="dropdown-menu"> 
     {!! Form::open(['action' => ['Test\\[email protected]', $thread->id], 'method' => 'delete', 'class' => 'blog-form']) !!} 
     <button style="color:red; width: 80px; background: none; border: none;"><span class="glyphicon glyphicon-trash"></span> Delete</button> 
     {!! Form::close() !!} 
</ul> 

Wie ich schon sagte, es funktioniert die ganze Zeit. Ich weiß nicht, wo ich mich verändert habe, aber ich kann den Fehler Jet nicht finden.

meine Route:

Route::delete('/delete/{id}', ['as' => 'destroy', 'uses' => 'Test\\[email protected]']); 

und die Löschfunktion:

public function destroy($id) 
    { 
     $thread = Thread::query()->findOrFail($id); 
     $thread->delete(); 

     \Session::flash('flash_message', 'successfully deleted!'); 
     return redirect(action('Test\\[email protected]', [Auth::user()->id])); 
    } 

Thread -> Kommentar realation:

public function threadcomment() 
    { 
     return $this->hasMany('App\Models\Thread\Comment', 'thread_id', 'id'); 
    } 

Kommentar -> Thread realation

public function commentthread() 
    { 
     return $this->belongsTo('App\Models\Thread\Thread', 'thread_id', 'id'); 
    } 

Ich weiß auch zu 100% Ich habe eine On Delete Cascade zu meiner Datenbank hinzugefügt.

+0

Teilen Sie auch Ihre Bereiche und Beziehungen –

+0

Können Sie Ihre Migrationsdateien auch teilen? – Hammerbot

+0

Ich denke, vielleicht gibt es etwas in meinem Modell. Ich werde meine Frage mit meinem Kommentar und Thread-Modell – WellNo

Antwort

1

Wie es scheint, haben Sie zwei Tabellen, threads und comments. Wenn Sie Elemente aus der Thread-Tabelle löschen, die noch mit der Tabelle comments verknüpft sind, wird Ihnen dieser Fehler angezeigt.

Können Sie uns Ihr Datenbanklayout zeigen? Verwenden Sie eine Pivot-Tabelle?

Wenn Sie eine Pivot-Tabelle verwenden, stellen Sie sicher, dass onDelete('cascade') hinzufügen:

$table->foreign('thread_id')->references('id')->on('threads')->onDelete('cascade'); 

die Schema Builder für Details.

+0

Ich habe eine On Delete Cascade in meiner Datenbank. Wenn ich meine db-Struktur betrachte, wird die Ein-Lösch-Kaskade angezeigt. Deshalb glaube ich nicht, dass es wegen meiner Datenbank ist:/ – WellNo

+0

löste den Code :) Danke trotzdem :) Die Lösung ist in meiner Frage – WellNo

0

(Postantwort im Namen des OP).

Das Problem war die Laravel-Form. Ich musste die Form :: open und die Form :: close, um die Dropdown-Tags setzen. Lächerlich - danke trotzdem.

Verwandte Themen