Heim > Artikel > PHP-Framework > Lassen Sie uns über die einfachste „Eins-zu-Eins“-Beziehung zwischen Laravel-Modellen sprechen!
! , 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 --migrationSchauen Sie sich das generierte App/Profil an. die entsprechende Datenbank-
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 {}Die Methode für das Rollback wird nicht aufgeführt, es handelt sich lediglich um das Löschen der Tabelle. Führen Sie die folgenden Migrationsanweisungen manuell aus:
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(); });}Der Ausgabeinhalt lautet wie folgt:
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.phpSobald die obige Methode definiert ist, kann sie in einer Kette wie dieser aufgerufen werden:
class User extends Model { public function profile() { return $this->hasOne('App\Profile'); }}Lass es uns auseinandernehmen und erklären. Verwenden Sie zunächst
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;Wenn Sie es verwenden, dürfen Sie nicht verwirrt sein und wissen, wie man es verwendet. Bei zugeordneten Abfragen gibt es natürlich zugehörige Aktualisierungen:
$user = User::find($id); $user->profile; // 返回 Profile 对象 $user->profile(); // 返回 hasOne 关联关系对象Bei Schreibvorgängen wie zugeordneten Aktualisierungen gibt es natürlich zugehörige Löschvorgänge und Modellmethodenaufrufe:
$profile = new Profile; $profile->telephone = '12345678'; $user = User::find(1); $user->profile()->save($profile);Weil es sich ausschließlich um eine handelt. Das heißt, ein Benutzer hat nur ein Profil. Wenn ein Benutzer gelöscht wird, bleibt
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!