! , ich hoffe, es wird Freunden in Not helfen!
EinführungRelationale Datenbanken bieten einen sehr benutzerfreundlichen Datenzuordnungsbindungsmodus, und SQL-Anweisungen können zum einfachen Abfragen und Bearbeiten verwandter Daten verwendet werden. Wenn alle Beziehungen auf Datenbankebene betrieben werden, ist dies sehr unpraktisch.
Das Laravel-Modell stellt also Assoziationsbeziehungen bereit, und dieser Artikel wird diese Verwendungen klären.
CodierungszeitWir wollen das Manuskript nicht wie eine PPT lesen und alle Beziehungsmodelle auflisten. Das ist nicht intuitiv und keine effiziente Art zu lernen. Beginnen wir mit dem Beispiel, um zu sehen, welches Problem die Assoziationsbeziehung löst und wie man sie nutzt.
Zuerst erfolgt die Vorbereitung der Datenbank. Gehen Sie davon aus, dass zwischen den folgenden beiden Tabellen eine Feldkorrespondenz besteht:
Verwenden Sie die Befehlszeile, um ein Profilmodell zu erstellen und gleichzeitig eine Migrationsdatei zu erstellen:php artisan make:model Profile --migration
Profile
-Tabelle.Immer noch die alte Regel, implementieren Sie zuerst die Datenbankmigration mit der Methode up
:namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}
public function up(){ Schema::create('profiles', function(Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users'); $table->string('url'); $table->string('telephone'); $table->timestamps(); });}
php artisan migrate
Assoziationsbeziehung
Alles ist bereit, wir beginnen, Assoziationsbeziehungen zu verwenden, um die Datenkonsistenz zu handhaben. Ein Benutzer entspricht einem Profil, es handelt sich also um eine Eins-zu-Eins-Beziehung.
Fügen Sie die folgende Anweisung im Benutzermodell hinzu:Migrated: 2020_10_11_015236_create_profiles_table.php
class User extends Model { public function profile() { return $this->hasOne('App\Profile'); }}
User::find($id), um eine Instanz des Benutzermodellobjekts zurückzugeben. Diese Instanz verfügt über eine profile
-Methode, bei der es sich um die obige Beziehungsaussage handelt. Callingprofile
gibt eine Instanz des Profile-Objekts zurück, sodass Sie weiterhin die Eigenschaften von Profile aufrufen können, dem Ursprung von Telefon. Es ist wichtig zu beachten, dass ähnlich wie bei der folgenden Schreibmethode die Rückgabeergebnisse unterschiedlich sind:$user = User::find(1)->profile->telephone;
$user = User::find($id); $user->profile; // 返回 Profile 对象 $user->profile(); // 返回 hasOne 关联关系对象
$profile = new Profile; $profile->telephone = '12345678'; $user = User::find(1); $user->profile()->save($profile);
ein einsames Profil ohne Anhang zurück.
Zusätzlich zur Konsistenzgarantie im Programmkontext können Sie beim Löschen des Benutzers auch den Fremdschlüssel der Datenbank verwenden, um die Profilzuordnung zu löschen. Dann ändern Sie einfach die Migrationsdateiund fügen Sie den folgenden Inhalt hinzu:$user = User::find($id); $user->profile()->delete();
Am Ende geschrieben
Dieser Artikel stellt die einfachste „Eins-zu-Eins“-Zuordnung von Laravel-Modellen vor. Wir erklären sie aus der Programmperspektive und die Datenbankperspektive So löschen Sie Ressourcen konsistent, wenn Sie sie löschen. Komplexere Beziehungen sind auf der Programmierebene von Bedeutung. Weitere Beziehungen werden wir im nächsten Kapitel vorstellen.
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die einfachste „Eins-zu-Eins'-Beziehung zwischen Laravel-Modellen sprechen!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!