ThinkPHP: Verwendung des JSON-Feldtyps (ORM)
ThinkPHP 5.1 ist seit einiger Zeit offiziell veröffentlicht und ich werde Ihnen nach und nach die neuen Funktionen vorstellen. Was ich Ihnen heute vorstellen möchte, ist eine Funktion, die viele Benutzer möglicherweise noch nicht verstehen: JSON-Felddatenunterstützung.
Bitte beachten Sie jedoch zunächst, dass die in diesem Artikel beschriebene Unterstützung für JSON-Felddaten ab Version V5.1.4 eingeführt wurde. Aufgrund der Einbindung von Sicherheitsupdates wird empfohlen, unbedingt Version 5.1.9+ zu verwenden.
Die Definition des JSON-Felds in diesem Artikel umfasst den JSON-Typ oder den Zeichentyp, bei dem die gespeicherten Daten im JSON-Format vorliegen. Daher gibt es theoretisch keine Anforderungen an den Datenbanktyp und die Version, außer bei der Verwendung einer bedingten JSON-Feldabfrage.
Db-Klasse betreibt JSON
Wenn Sie die Modellklasse nicht verwenden, stellt die Db-Klasse eine JSON-Methode zur Angabe Ihrer bereit Felder im JSON-Format der Datentabelle. Ihre Benutzertabelle verfügt beispielsweise über ein Infofeld vom Typ JSON. Sie können die Daten mit der folgenden Methode bearbeiten.
Datenschreiben
$user['name'] = 'thinkphp'; $user['info'] = [ 'email' => 'thinkphp@qq.com', 'nickname' => '流年', ]; Db::name('user') ->json(['info']) ->insert($user);
Der Parameter der JSON-Methode ist ein Array. Im Beispiel können mehrere Felder vom Typ JSON angegeben werden .
Datenabfrage
Fragen Sie die gesamten JSON-Daten ab.
$user = Db::name('user') ->json(['info']) ->find(1); dump($user);
Die zurückgegebenen Abfrageergebnisdaten enthalten automatisch einen Array-Typ von Informationsdaten, was bedeutet, dass die Daten im JSON-Format automatisch von json_decode verarbeitet wurden.
Diese Abfragemethode erfordert nicht unbedingt die Verwendung des JSON-Typs für das Infofeld
Wenn Sie eine Abfrage basierend auf dem Wert von JSON-Daten benötigen, können Sie dies tun Verwenden Sie die folgende Methode
$user = Db::name('user') ->json(['info']) ->where('info->nickname','ThinkPHP') ->find(); dump($user);
Erfordert, dass das Infofeld vom Typ JSON ist. MySQL erfordert Version 5.7+ zur Unterstützung
Natürlich kann es auch mehrere unterstützen. Ebene
$user = Db::name('user') ->json(['info']) ->where('info->profile->nickname','ThinkPHP') ->find(); dump($user);
Da die Attributtypen von JSON-Feldern nicht vorhanden sind Es wird nicht automatisch abgerufen. Wenn es sich also um eine ganzzahlige Datenabfrage handelt, ist eine manuelle Parameterbindung erforderlich, zum Beispiel:
$user = Db::name('user') ->json(['info']) ->where('info->user_id', ':user_id') ->bind(['user_id' => [10, \PDO::PARAM_INT]]) ->find(); dump($user);
Datenaktualisierung
Vollständige JSON-Datenaktualisierung
$data['info'] = [ 'email' => 'kancloud@qq.com', 'nickname' => 'kancloud', ]; Db::name('user') ->json(['info']) ->where('id',1) ->update($data);
Diese Abfrage erfordert nicht unbedingt die Verwendung des JSON-Typs für das Infofeld
Wenn Sie nur einen bestimmten Wert in den JSON-Daten aktualisieren, können Sie die folgende Methode verwenden:
$data['info->nickname'] = 'ThinkPHP'; Db::name('user') ->json(['info']) ->where('id',1) ->update($data);
Es ist außerdem erforderlich, dass das Infofeld vom Typ JSON sein muss
Das Modell betreibt JSON-Daten
Wenn Sie verwenden: Wenn das Modell die Datenbank betreibt, wird die JSON-Datenoperation einfacher.
Wir müssen nur eine JSON-Attributdefinition zur Benutzermodellklasse hinzufügen. Das
<?php namespace app\index\model; use think\Model; class User extends Model { // 设置json类型字段 protected $json = ['info']; }
json-Attribut unterstützt auch die Definition mehrerer Feldnamen. Nach der Definition können die folgenden JSON-Datenoperationen ausgeführt werden.
Daten schreiben
Array-Methode verwenden, um JSON-Daten zu schreiben:
$user = new User; $user->name = 'thinkphp'; $user->info = [ 'email' => 'thinkphp@qq.com', 'nickname '=> '流年', ]; $user->save();
Objektmethode verwenden, um JSON-Daten zu schreiben
$user = new User; $user->name = 'thinkphp'; $info = new StdClass(); $info->email = 'thinkphp@qq.com'; $info->nickname = '流年'; $user->info = $info; $user->save();
Daten abfragen
Der Ergebnistyp unterscheidet sich von der Db-Klassenabfrage. Das JSON-Feld des Modells wird automatisch in den Objektmodus konvertiert.
$user = User::get(1); echo $user->name; // thinkphp echo $user->info->email; // thinkphp@qq.com echo $user->info->nickname; // 流年
kann auch die Abfrage von JSON-Felddaten unterstützen.
$user = User::where('info->nickname','流年')->find(); echo $user->name; // thinkphp echo $user->info->email; // thinkphp@qq.com echo $user->info->nickname; // 流年
ist dasselbe wie eine DB-Abfrage. Wenn das JSON-Attribut, das Sie abfragen müssen, ein Ganzzahltyp ist, ist eine manuelle Parameterbindung erforderlich.
$user = User::where('info->user_id',':user_id') ->bind(['user_id' => [10 ,\PDO::PARAM_INT]]) ->find(); echo $user->name; // thinkphp echo $user->info->email; // thinkphp@qq.com echo $user->info->nickname; // 流年
Wenn Sie Version V5.1.11+ verwenden, können Sie den Attributtyp des JSON-Felds in der Modellklasse definieren und der entsprechende Typ der Parameterbindungsabfrage wird automatisch durchgeführt.
<?php namespace app\index\model; use think\Model; class User extends Model { // 设置json类型字段 protected $json = ['info']; // 设置JSON字段的类型 protected $jsonType = [ 'user_id'=>'int' ]; }
Attribute ohne definierten Typ verwenden standardmäßig den String-Typ, sodass String-Typ-Attribute nicht definiert werden müssen.
Daten aktualisieren
Beim Aktualisieren von JSON-Daten werden auch Objekte verwendet
$user = User::get(1); $user->name = 'kancloud'; $user->info->email = 'kancloud@qq.com'; $user->info->nickname = 'kancloud'; $user->save();
Wenn Sie komplexere Vorgänge für Felder vom Typ JSON ausführen müssen, können Sie auch Abgeschlossen ausführen durch exp-Ausdruck. Dies wartet darauf, dass jeder mehr über die JSON-Nutzung entdeckt.
Die chinesische PHP-Website bietet eine große Anzahl kostenloser ThinkPHP-Einführungs-Tutorials, zum Lernen ist jeder herzlich willkommen!
Dieser Artikel wurde reproduziert von: https://blog.thinkphp.cn/784281
Das obige ist der detaillierte Inhalt vonThinkPHP: Verwendung des JSON-Feldtyps (ORM). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um das ThinkPHP-Projekt auszuführen, müssen Sie: Composer installieren, das Projektverzeichnis aufrufen und http://localhost:8000 aufrufen.

ThinkPHP verfügt über mehrere Versionen, die für verschiedene PHP-Versionen entwickelt wurden. Zu den Hauptversionen gehören 3.2, 5.0, 5.1 und 6.0, während Nebenversionen dazu dienen, Fehler zu beheben und neue Funktionen bereitzustellen. Die neueste stabile Version ist ThinkPHP 6.0.16. Berücksichtigen Sie bei der Auswahl einer Version die PHP-Version, die Funktionsanforderungen und den Community-Support. Für optimale Leistung und Support wird empfohlen, die neueste stabile Version zu verwenden.

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

Zu den Leistungsoptimierungsmethoden für die Konvertierung von PHP-Arrays in JSON gehören: Verwendung von JSON-Erweiterungen und der Funktion json_encode(); Verwendung von Puffern zur Verbesserung der Leistung der Schleifencodierung; JSON-Codierungsbibliothek.

Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: Joined-Subclass: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Unterklasse: ähnelt der verbundenen Unterklasse, aber die Tabelle der übergeordneten Klasse vereint alle Spalten der Unterklasse.

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

ThinkPHP-Installationsschritte: Bereiten Sie PHP-, Composer- und MySQL-Umgebungen vor. Erstellen Sie Projekte mit Composer. Installieren Sie das ThinkPHP-Framework und die Abhängigkeiten. Datenbankverbindung konfigurieren. Anwendungscode generieren. Starten Sie die Anwendung und besuchen Sie http://localhost:8000.
