Ich frage mich, wie Sie doppelte Einträge in der DB-Tabelle löschen und die neuen Kopien in der Tabelle behalten. Dies ist, wie meine Tabelle wie folgt aussieht:Laravel 5.1 Löschen von Duplikaten in DB mit beredten
$table->increments('id');
$table->string('text');
$table->string('type');
$table->integer('external_id');
$table->timestamps();
Da ich aus anderen DB bin importieren, und ich möchte alle Daten einmal täglich importieren, bedeutet, dass es einige bestehende Einträge bereits in der DB sein, und neue Einträge als Gut. Da ich nur die Einträge behalten muss, die neu sind, muss ich alle alten Einträge löschen (Duplikate und eindeutige Einträge, die nicht neu sind). Gibt es eine Möglichkeit, es in Laravel 5.1 mit Eloquent zu tun? Ich habe dies versucht, aber es löscht alles in der Tabelle:
$deleteDuplicates = DB::table('questions')->select('external_id')->distinct()->delete();
Das gibt mir die folgenden ng Fehler: QueryException in Connection.php Zeile 651: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, um die richtige Syntax für 'as' n1' aus 'questions' als' n1' innere Join 'Fragen' als' n2' auf 'n1' zu verwenden.' id'> '' in Zeile 1 (SQL: lösche 'Fragen' als' n1' aus 'Fragen' als' n1' innere Verbindung 'Fragen' als' n2' auf 'n1'.'id'>' n2'.'id' wobei 'n1 '.'external_id' = n2.external_id) – Marco
Überprüfen Sie den obigen Link. Wenn eloquent nicht funktioniert, verwenden Sie Abfrage-Generator, wo Sie sogar Raw SQL setzen können. Aber überprüfen Sie zuerst die SQL in Ihrem Test db, wenn das funktioniert oder nicht. – iamkdev