Heim PHP-Framework Denken Sie an PHP ThinkPHP: Verwendung des JSON-Feldtyps (ORM)

ThinkPHP: Verwendung des JSON-Feldtyps (ORM)

Dec 16, 2019 pm 03:52 PM
json orm thinkphp 字段类型

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

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

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

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

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

Datenaktualisierung

Vollständige JSON-Datenaktualisierung

$data['info'] = [
'email'    => 'kancloud@qq.com',
'nickname' => 'kancloud',
];
Db::name('user')
->json(['info'])
    ->where('id',1)
->update($data);
Nach dem Login kopieren

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

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 = [&#39;info&#39;];
}
Nach dem Login kopieren

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 = &#39;thinkphp&#39;;
$user->info = [
&#39;email&#39;    => &#39;thinkphp@qq.com&#39;,
    &#39;nickname &#39;=> &#39;流年&#39;,
];
$user->save();
Nach dem Login kopieren

Objektmethode verwenden, um JSON-Daten zu schreiben

$user = new User;
$user->name = &#39;thinkphp&#39;;
$info = new StdClass();
$info->email = &#39;thinkphp@qq.com&#39;;
$info->nickname = &#39;流年&#39;;
$user->info = $info;
$user->save();
Nach dem Login kopieren

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; // 流年
Nach dem Login kopieren

kann auch die Abfrage von JSON-Felddaten unterstützen.

$user = User::where(&#39;info->nickname&#39;,&#39;流年&#39;)->find();
echo $user->name; // thinkphp
echo $user->info->email; // thinkphp@qq.com
echo $user->info->nickname; // 流年
Nach dem Login kopieren

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(&#39;info->user_id&#39;,&#39;:user_id&#39;)
->bind([&#39;user_id&#39; => [10 ,\PDO::PARAM_INT]])
->find();
echo $user->name; // thinkphp
echo $user->info->email; // thinkphp@qq.com
echo $user->info->nickname; // 流年
Nach dem Login kopieren

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 = [&#39;info&#39;];
    
    // 设置JSON字段的类型
    protected $jsonType = [
    &#39;user_id&#39;=>&#39;int&#39;
    ];
}
Nach dem Login kopieren

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 = &#39;kancloud&#39;;
$user->info->email = &#39;kancloud@qq.com&#39;;
$user->info->nickname = &#39;kancloud&#39;;
$user->save();
Nach dem Login kopieren

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So führen Sie das Thinkphp-Projekt aus So führen Sie das Thinkphp-Projekt aus Apr 09, 2024 pm 05:33 PM

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

Es gibt mehrere Versionen von thinkphp Es gibt mehrere Versionen von thinkphp Apr 09, 2024 pm 06:09 PM

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.

So führen Sie thinkphp aus So führen Sie thinkphp aus Apr 09, 2024 pm 05:39 PM

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.

Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON May 04, 2024 pm 06:15 PM

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.

Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? May 07, 2024 am 08:39 AM

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.

Wie implementiert Hibernate polymorphe Zuordnung? Wie implementiert Hibernate polymorphe Zuordnung? Apr 17, 2024 pm 12:09 PM

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.

Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? May 06, 2024 pm 10:09 PM

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

So installieren Sie thinkphp So installieren Sie thinkphp Apr 09, 2024 pm 05:42 PM

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.

See all articles