Heim > PHP-Framework > Laravel > 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!

藏色散人
Freigeben: 2020-10-12 14:10:34
nach vorne
2519 Leute haben es durchsucht

! , 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
Nach dem Login kopieren
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 {}
Nach dem Login kopieren
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();
    });}
Nach dem Login kopieren
Der Ausgabeinhalt lautet wie folgt:
php artisan migrate
Nach dem Login kopieren

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
Nach dem Login kopieren
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');
    }}
Nach dem Login kopieren
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;
Nach dem Login kopieren
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 关联关系对象
Nach dem Login kopieren
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);
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage