Heim  >  Artikel  >  PHP-Framework  >  Lassen Sie uns über die einfachste „Eins-zu-Eins“-Beziehung zwischen Laravel-Modellen sprechen!

Lassen Sie uns über die einfachste „Eins-zu-Eins“-Beziehung zwischen Laravel-Modellen sprechen!

藏色散人
藏色散人nach vorne
2020-10-12 14:10:342487Durchsuche

! , ich hoffe, es wird Freunden in Not helfen!

Lassen Sie uns über die einfachste „Eins-zu-Eins“-Beziehung zwischen Laravel-Modellen sprechen!

Einführung

Relationale 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.

Codierungszeit

Wir 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
Lassen Sie uns über die einfachste „Eins-zu-Eins“-Beziehung zwischen Laravel-Modellen sprechen! Schauen 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.php
Sobald 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.

Calling

profile

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 Migrationsdatei

und 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen