2016-05-24 20 views
0

Ich schreibe einen Code für gelegentliche Ausführung geplant werden. Ich möchte Datensätze von Benutzern entfernen, die ihre Details in der Benutzertabelle haben, aber ihre Datensätze auch nicht in der Profiltabelle haben. Ich denke über das Entfernen der von ihrer ID, aber ich bin mir nicht sicher, wie ich das Spiel machen kann. Profile Migration:Überprüfung Zeitplan Task-Code In Laravel 5.1

public function up() 
{ 
    Schema::create('profiles', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->timestamps(); 
     $table->string('gender',5); 
     $table->integer('user_id')->unsigned(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); // When a profile is deleted- his corresponding associated id details are deleted as well. 
     $table->tinyInteger('age')->unsigned()->nullable(); 
     $table->string('goals')->nullable();; 
     $table->string('activityType')->nullable(); 
     $table->rememberToken(); // for remember me feature. 
    }); 
} 

Benutzermigration:

public function up() 
{ 
    Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('username',20)->unique(); 
     $table->string('email')->unique(); 
     $table->string('password', 60); 
     $table->rememberToken(); 
     $table->timestamps(); 
    }); 

Ich habe begonnen, um die Abfrage zu schreiben, aber ich bin nicht sicher, wie es weitergeht.

public function handle() 
    { 
    // type the query to get users that have no data in their profiles. 

     $empty_profile=App\Profile:::where('id','')->get; 
     $user_id=App\User::where('id') 
    } 

Schätzen Sie Ihre Hilfe. Vielen Dank.

Antwort

1

Obwohl Ihr Beispiel mir nicht ganz klar ist (und ich frage mich, warum es Anwender in erster Linie ohne Profile wäre?) Ich denke, das ist das, was Sie brauchen:

public function handle() 
{ 
    $empty_profiles = App\User::doesntHave('profile')->delete(); 
} 

Das funktioniert, wenn die Modelle sind korrekt verbunden Siehe auch:

+0

hey, es ist, weil ich Daten in 'Benutzer' Tabelle einfügen und dann Daten in 'Profile' Tabelle in einer anderen Seite einfügen, so habe ich 2 separate Modelle erstellt. Nicht der beste Ansatz, wenn ich zurückblicke. Es sieht jetzt gut aus, danke! Ich frage mich, warum dies in der Laravel-Dokumentation nicht gezeigt wird. Jetzt muss ich diese Datensätze aus der db entfernen, welche eloquent/Abfrage-Generator sollte ich verwenden? – osherdo

+0

Ich versuche, in php Handwerker basteln '$ empty_profiles-> delete() zu löschen, sondern' Aber ich erhalte eine Fehlermeldung: 'BadMethodCallException mit der Meldung‚Methode löschen nicht – osherdo

+1

nicht exist.' aktualisiert Antwort anzeigen (- > get() wurde zu -> delete()). Das sollte funktionieren. Gib mir Bescheid. – RMK