Heim  >  Artikel  >  PHP-Framework  >  Lassen Sie uns über die Verwendung von Modellen in ThinkPHP 5.0 sprechen

Lassen Sie uns über die Verwendung von Modellen in ThinkPHP 5.0 sprechen

PHPz
PHPzOriginal
2023-04-21 10:12:221287Durchsuche

ThinkPHP 5.0 ist eines der am weitesten verbreiteten PHP-Entwicklungsframeworks in China. Es hat nicht nur zahlreiche Optimierungen und Verbesserungen am Kerncode vorgenommen, sondern auch viele neue Funktionen und Features hinzugefügt, unter denen das Modell ebenfalls große Aufmerksamkeit erhalten hat . Upgrade. In diesem Artikel wird detailliert beschrieben, wie Modelle in ThinkPHP 5.0 verwendet werden.

1. Was ist ein Modell?

Ein Modell ist einfach eine Datenoperationsklasse, die zum Betrieb der Datenbank verwendet wird. In ThinkPHP kapselt das Modell die Datentabelle und ermöglicht so bequeme und schnelle Operationen an der Datentabelle. Beim Erstellen eines Modells müssen Sie nur ThinkModel erben, anstatt eine große Anzahl von Abfragen und SQL-Anweisungen zu schreiben.

2. Erstellen Sie ein einfaches Modell

  1. Erstellen Sie zunächst ein Modell in ThinkPHP 5.0

In ThinkPHP 5.0 ist das Erstellen eines Modells sehr einfach. Sie müssen nur ein neues Modellverzeichnis im Anwendungsverzeichnis erstellen und dann ein Modellverzeichnis im Modellverzeichnis. Erstellen Sie eine neue Datei mit dem Namen User.php mit dem folgenden Code:

<?php

namespace app\model;

use think\Model;

class User extends Model
{
}
  1. Mit der Datenbank verbinden

ThinkPHP 5.0 verwendet standardmäßig PDO, um eine Verbindung zur Datenbank herzustellen, und die Datenbankverbindungsinformationen sind konfiguriert in der Datei „database.php“ im Anwendungsverzeichnis. Nachdem die Verbindung erfolgreich hergestellt wurde, können Sie entsprechende Vorgänge im Modell ausführen.

  1. Grundlegende CRUD-Operationen des Modells

In ThinkPHP 5.0 wurden die grundlegenden CRUD-Operationen des Modells gekapselt und können direkt aufgerufen werden. Nehmen Sie das Benutzermodell als Beispiel, um die häufigsten CRUD-Operationen zu demonstrieren:

(1) Daten einfügen

$user = new User();

$user->name = 'Tom';
$user->age = 20;

$user->save();

Das Obige ist die gebräuchlichste Methode zum Einfügen von Daten. Instanziieren Sie ein Benutzerobjekt und weisen Sie dem Objekt dann Werte zu Attribute und schließlich aufrufen Die Methode save () speichert Daten in der Datenbank.

(2) Daten löschen

User::destroy(1);

Die 1 hier ist die ID der zu löschenden Daten. Wenn Sie mehrere Daten löschen möchten, können Sie ein Array übergeben. Sie können auch die Methode where zum bedingten Löschen verwenden.

(3) Daten abfragen

// 查询所有数据
$users = User::all();

// 根据条件查询单条数据
$user = User::where('name', 'Tom')->find();

// 根据条件查询多条数据
$users = User::where('age', '>', 18)->select();

(4) Daten aktualisieren

$user = User::get(1);

$user->name = 'Jack';

$user->save();

Das heißt, fragen Sie zuerst die zu ändernden Daten ab und speichern Sie sie dann nach der Änderung der Daten über die Methode save () in der Datenbank.

3. Modellkorrelationsoperationen

In der tatsächlichen Entwicklung sind häufig komplexe gemeinsame Abfragen und Korrelationsoperationen für mehrere Datentabellen erforderlich. Das ThinkPHP 5.0-Modell bietet umfangreiche Assoziationsoperationen, mit denen Assoziationsprobleme zwischen Tabellen schnell gelöst werden können.

  1. Eins-zu-eins-Zuordnung

In ThinkPHP 5.0 gibt es drei Möglichkeiten der Eins-zu-eins-Zuordnung:

(1) Zuordnungsmodellattribute

class User extends Model
{
    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$profile = $user->profile;

Im obigen Code das Benutzermodell und das Profilmodell werden über die hasOne()-Methode kombiniert. Verknüpfen Sie es und rufen Sie dann das Attribut $user->profile auf, um die zugehörigen Daten abzurufen.

(2) Zugehörige Abfrage

$user = User::with('profile')->select();

$profile = $user->profile;

Im obigen Code wird die zugehörige Abfrage direkt über die Methode with() ausgeführt und anschließend das Attribut $user->profile aufgerufen, um die zugehörigen Daten abzurufen.

(3) Integrierte Abfrage

$user = User::field('name')
            ->join('profile', 'profile.user_id=user.id')
            ->select();

$profile = $user->profile;

Im obigen Code werden die Benutzertabelle und die Profiltabelle über die Methode join() verbunden, und dann können die Felder der Profiltabelle im Feldausdruck abgerufen werden.

  1. Eins-zu-viele-Zuordnung

In ThinkPHP 5.0 gibt es auch drei Möglichkeiten der Eins-zu-viele-Zuordnung:

(1) Zuordnungsmodellattribute

class User extends Model
{
    public function books()
    {
        return $this->hasMany('Book');
    }
}

class Book extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

$user = User::get(1);

$books = $user->books;

Im obigen Code das Benutzermodell und das Buch werden über die Methode hasMany() verbunden. Die Modelle werden verknüpft, und dann wird die Eigenschaft $user->books aufgerufen, um die zugehörigen Daten abzurufen.

(2) Zugehörige Abfrage

$user = User::with('books')->select();

$books = $user->books;

Im obigen Code wird die zugehörige Abfrage direkt über die Methode with() ausgeführt und anschließend das Attribut $user->books aufgerufen, um die zugehörigen Daten abzurufen.

(3) Integrierte Abfrage

$user = User::field('name')
            ->join('book', 'book.user_id=user.id')
            ->select();

$books = $user->books;

Im obigen Code wird die Benutzertabelle über die Methode join() mit der Buchtabelle verbunden, und dann können die Felder der Buchtabelle im Feldausdruck abgerufen werden.

  1. Many-to-many-Assoziation

Many-to-many-Assoziation hat in ThinkPHP 5.0 auch drei Möglichkeiten:

(1) Hauptmodell verknüpft Modellattribute

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany('Role');
    }
}

class Role extends Model
{
    public function users()
    {
        return $this->belongsToMany('User');
    }
}

$user = User::get(1);

$roles = $user->roles;

Im obigen Code sind das Benutzermodell und die Rolle Durch die Methode „gehörtToMany()“ verbunden. Die Modelle werden verknüpft, und dann wird die Eigenschaft „$user->roles“ aufgerufen, um die zugehörigen Daten abzurufen.

(2) Fragen Sie die Zwischentabellen separat ab

$user = User::get(1);

$roles = $user->roles()
            ->where('status', '1')
            ->select();

Rufen Sie im obigen Code die Methode $user->roles() auf, um die Zwischentabelle abzurufen, und verwenden Sie dann die Methode where(), um eine bedingte Abfrage durchzuführen.

(3) Zwischentabellenintegrationsabfrage

$user = User::field('name,role.name as rolename')
            ->join('user_role','user_role.user_id=user.id')
            ->join('role', 'user_role.role_id=role.id')
            ->select();

$roles = $user->roles;

Im obigen Code werden die Benutzertabelle, die UserRole-Tabelle und die Rollentabelle über die Methode join() verbunden, und dann können die Felder der Rollentabelle im Feldausdruck abgerufen werden .

4. Modellereignisse

ThinkPHP 5.0-Modellereignisse bieten viele nützliche Hooks im Lebenszyklus des Modells, die es uns ermöglichen, Daten zu verschiedenen Zeiten und in verschiedenen Phasen zu betreiben und zu verarbeiten, und können problemlos Datenüberprüfung und automatisches Ausfüllen implementieren Update und andere Funktionen. Zu den häufig verwendeten Ereignissen gehören die folgenden:

(1) Vorabfrageereignis

class User extends Model
{
    protected static function onBeforeFind($query)
    {
        // before find event
    }
}

Im obigen Code wird das Vorabfrageereignis über die Methode onBeforeFind() hinzugefügt.

(2) Pre-Insert-Ereignis

class User extends Model
{
    protected static function onBeforeInsert($data)
    {
        // before insert event
    }
}

Fügen Sie im obigen Code das Pre-Insert-Ereignis über die Methode onBeforeInsert() hinzu.

(3) Pre-Update-Ereignis

class User extends Model
{
    protected static function onBeforeUpdate($data)
    {
        // before update event
    }
}

Fügen Sie im obigen Code das Pre-Update-Ereignis über die Methode onBeforeUpdate() hinzu.

(4) Ereignis vor dem Löschen

class User extends Model
{
    protected static function onBeforeDelete($data)
    {
        // before delete event
    }
}

Fügen Sie im obigen Code das Ereignis vor dem Löschen über die Methode onBeforeDelete() hinzu.

5. Zusammenfassung

Durch die Einleitung dieses Artikels können wir sehen, dass das Modell in ThinkPHP 5.0 sehr einfach zu verwenden ist und CRUD-Operationen und häufig verwendete verwandte Abfragen unterstützt. Gleichzeitig können Modellereignisse problemlos Funktionen wie Datenüberprüfung, automatisches Ausfüllen und Datenaktualisierung implementieren. Durch den Einsatz vertiefter Lernmodelle kann die Entwicklungseffizienz verbessert und der Projektentwicklungsprozess beschleunigt werden.

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Verwendung von Modellen in ThinkPHP 5.0 sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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