Heim Backend-Entwicklung PHP-Tutorial ThinkPHP-Ansichtsabfrage

ThinkPHP-Ansichtsabfrage

Jun 06, 2018 pm 03:05 PM
thinkphp

In diesem Artikel wird hauptsächlich die Ansichtsabfrage von ThinkPHP vorgestellt. Freunde, die sie benötigen, können darauf verweisen.

Die von ThinkPHP bereitgestellte Ansichtsabfragefunktion ist sehr leistungsfähig Mehrere Datentabellen müssen spezifiziert und gefiltert werden, basierend auf diesen Datentabellen in einem Ansichtsmodell organisiert werden, und dann können gemeinsame Abfragen mehrerer Tabellen direkt über das Modell durchgeführt werden, was sehr praktisch und einfach ist.

Zum Beispiel definieren wir im Projekt drei Tabellen:

Benutzer-Benutzer-Basistabelle,
user_info-Benutzerdetailtabelle,
dept-Abteilungsklassifizierungstabelle

Jetzt müssen wir bestimmte Benutzerinformationen abrufen.
Diese Informationen sollten den Kontonamen des Benutzers, zugehörige Informationen und den Namen der Abteilung enthalten.
Zu diesem Zeitpunkt können wir sie mit der Ansichtsabfrage verarbeiten.

Das Folgende ist ein Beispiel zur Veranschaulichung:

1 Erstellen Sie ein neues Projekt und führen Sie entsprechende Konfigurationen durch (siehe vorheriges Tutorial, das hier weggelassen wurde)
2. und fügen Sie diese drei Tabellen hinzu
(1) Benutzertabelle

CREATE TABLE `think_user` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID编号',
 `name` varchar(20) NOT NULL COMMENT '帐户',
 `password` varchar(32) NOT NULL COMMENT '密码',
 `dept_id` smallint(6) unsigned NOT NULL,
 `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '开放状态',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='会员表' AUTO_INCREMENT=2 ;
INSERT INTO `think_user` (`id`, `name`, `password`, `dept_id`, `status`) VALUES
(1, 'zzguo28', '123456', 2, 1);
Nach dem Login kopieren

(2) Benutzerinformationen

CREATE TABLE `think_user_info` (
 `user_id` int(11) NOT NULL COMMENT '用户id',
 `nick_name` varchar(30) NOT NULL COMMENT '用户昵称',
 `email` varchar(100) NOT NULL COMMENT '邮箱地址',
 `address` varchar(100) NOT NULL COMMENT '详细地址',
 `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性别',
 `mobile` varchar(100) NOT NULL COMMENT '手机号码',
 `telephone` varchar(100) NOT NULL COMMENT '电话号码',
 KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户信息表';
INSERT INTO `think_user_info` (`user_id`, `nick_name`, `email`, `address`, `gender`, `mobile`, `telephone`) VALUES
(1, '国', 'zzguo28@163.com', 'TP路think街1.6号', 1, '12345678901', '123456');
Nach dem Login kopieren

(3) Abteilungsklassifizierungstabelle

CREATE TABLE `think_dept` (
 `id` smallint(3) NOT NULL AUTO_INCREMENT,
 `name` varchar(50) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `think_dept` (`id`, `name`) VALUES
(1, '开发部'),
(2, '销售部'),
(3, '财务部');
Nach dem Login kopieren

3. Im Projekt/ Lib/ Erstellen Sie das Basismodell Modell
für diese drei Tabellen unter Modell. Dieses Beispiel beinhaltet keine Überprüfung und andere Funktionen, sodass Sie einfach den Test definieren können, z. B.

 <?php
  class UserModel extends Model {
  }
 ?>
Nach dem Login kopieren

Die dem Ansichtsmodell entsprechende Tabelle muss nicht unbedingt ein entsprechendes Basismodell sein. Es wird jedoch empfohlen, sie so zu erstellen, dass sowohl einzelne Tabellen als auch Ansichten funktionieren können.

4. Erstellen Sie ein Ansichtsmodell. Der Code lautet wie folgt. Detaillierte Anmerkungen werden unten angezeigt:

(Hinweis: Die neueste SVN hat die Funktion zum dynamischen Erweitern des Modells hinzugefügt. Um die zu verwenden In der neuen Version müssen Sie das geschützte Attribut in ein öffentliches Attribut ändern. In diesem Tutorial wird empfohlen, die dynamische Erweiterungsfunktion zu verwenden, um die Ansichtsabfrage anstelle der Vererbungsmethode zu verwenden.)

<?php
import(&#39;ViewModel&#39;);
class UserViewModel extends ViewModel{
  protected $viewFields = array(
    &#39;User&#39;   =>array(&#39;id&#39;,&#39;name&#39;,&#39;_as&#39;=>&#39;u&#39;,&#39;_type&#39;=>&#39;left&#39;),
    &#39;UserInfo&#39; =>array(&#39;email&#39;,&#39;mobile&#39;,&#39;_as&#39;=>&#39;ui&#39;,&#39;_on&#39;=>&#39;ui.user_id=u.id&#39;),
    &#39;Dept&#39;   =>array(&#39;name&#39;=>&#39;dept&#39;,&#39;_on&#39;=>&#39;u.dept_id=Dept.id&#39;),
  );
}
?>
Nach dem Login kopieren

Der obige Code wird erklärt wie folgt:

In Kapitel 2. Da in der Codezeile die Ansichtsabfrage seit TP-Version 1.6 von der ursprünglichen Modellklasse getrennt wurde, muss hier die Ansichtsmodellklasse mithilfe der Importmethode eingeführt werden.

In der dritten Codezeile wird der Name des Modells als UserViewModel definiert. Der Name des Ansichtsmodells vor Model ist willkürlich, nur um es von anderen Modellen zu unterscheiden Art und Weise als xxxViewModel . Und muss ViewModel erben. (ThinkPHP Version 1.6 muss das viewModel-Attribut des Modells nicht mehr auf true setzen, solange es ViewModel erbt)

Das $viewFields-Attribut in Zeile 4 des Codes stellt die im Ansichtsmodell enthaltenen Felder dar. Jedes Element definiert jede vom Modell benötigte Datentabelle oder jedes Feld.
Das Format ist

protected $viewFields = array(
    &#39;表名&#39;=>array(&#39;所需字段&#39;,&#39;_as&#39;=>&#39;别名定义&#39;,&#39;_on&#39;=>&#39;筛选条件&#39;,&#39;_type&#39;=>&#39;指定join类型,支持right,inner,left三种&#39;),
);
Nach dem Login kopieren

Beachten Sie das „name“=>„dept“ in der 7. Codezeile. Da es im Benutzermodell bereits ein Namensfeld gibt, verwenden wir diese Methode zum Konvertieren Abteilungsmodell Das Namensfeld wird dem Abteilungsfeld zugeordnet. Wenn mehrere Felder vorhanden sind, können diese auf die gleiche Weise hinzugefügt werden. Nachdem

definiert ist, testen wir es in Aktion. Der Code lautet wie folgt:

<?php
class IndexAction extends Action{
  public function index(){
    $dao = D(&#39;UserView&#39;);
    $where[&#39;u.id&#39;] = 1;
    dump($dao->where($where)->find());
    dump($dao->getLastSql());
  }
}
?>
Nach dem Login kopieren

Greifen Sie dann auf den Vorgang zu und Sie können sehen, dass wir den erforderlichen Abfrageinhalt erfolgreich erhalten haben:

array(1) {
 [0] => array(5) {
  ["id"] => string(1) "1"
  ["name"] => string(7) "zzguo28"
  ["email"] => string(17) "zzguo28@163.com"
  ["mobile"] => string(11) "12345678901"
  ["dept"] => string(9) "销售部"
 }
}
Nach dem Login kopieren

Und Sie können sehen, dass das verwendete SQL wie folgt ist

"SELECT u.id AS id,u.name AS name,ui.email AS email,ui.mobile AS mobile,Dept.name AS dept FROM think_user u LEFT JOIN think_user_info ui ON ui.user_id=u.id JOIN think_dept Dept ON u.dept_id=Dept.id WHERE ( u.id = 1 ) LIMIT 1 "
Nach dem Login kopieren

Das Abfragemodell des Ansichtsmodells unterscheidet sich nicht wesentlich von der gewöhnlichen Einzeltabelle. Sie können verschiedene kohärente Operationen verwenden, die wir kennen mit, wie Bestellung, Limit usw.

Verwandte Empfehlungen:

Verhaltenserweiterungen und Plug-Ins in ThinkPHP

Beispiel für ThinkPHP-Implementierungsaktualisierungsdaten, ausführliche Erklärung (Demo). )

Das obige ist der detaillierte Inhalt vonThinkPHP-Ansichtsabfrage. 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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.

Was ist besser, Laravel oder Thinkphp? Was ist besser, Laravel oder Thinkphp? Apr 09, 2024 pm 03:18 PM

Leistungsvergleich von Laravel- und ThinkPHP-Frameworks: ThinkPHP schneidet im Allgemeinen besser ab als Laravel und konzentriert sich auf Optimierung und Caching. Laravel schneidet gut ab, aber für komplexe Anwendungen ist ThinkPHP möglicherweise besser geeignet.

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben Nov 22, 2023 pm 12:01 PM

„Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework zur Implementierung asynchroner Aufgaben“ Mit der rasanten Entwicklung der Internettechnologie stellen Webanwendungen immer höhere Anforderungen an die Verarbeitung einer großen Anzahl gleichzeitiger Anforderungen und komplexer Geschäftslogik. Um die Systemleistung und das Benutzererlebnis zu verbessern, erwägen Entwickler häufig die Verwendung asynchroner Aufgaben, um einige zeitaufwändige Vorgänge auszuführen, z. B. das Senden von E-Mails, das Verarbeiten von Datei-Uploads, das Erstellen von Berichten usw. Im Bereich PHP bietet das ThinkPHP-Framework als beliebtes Entwicklungsframework einige praktische Möglichkeiten zur Implementierung asynchroner Aufgaben.

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.

Wie ist die Leistung von thinkphp? Wie ist die Leistung von thinkphp? Apr 09, 2024 pm 05:24 PM

ThinkPHP ist ein leistungsstarkes PHP-Framework mit Vorteilen wie Caching-Mechanismus, Codeoptimierung, Parallelverarbeitung und Datenbankoptimierung. Offizielle Leistungstests zeigen, dass es mehr als 10.000 Anfragen pro Sekunde verarbeiten kann und in großen Websites und Unternehmenssystemen wie JD.com und Ctrip in praktischen Anwendungen weit verbreitet ist.

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework für die API-Entwicklung Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework für die API-Entwicklung Nov 22, 2023 pm 05:18 PM

Entwicklungsvorschläge: So verwenden Sie das ThinkPHP-Framework für die API-Entwicklung Mit der kontinuierlichen Entwicklung des Internets ist die Bedeutung von API (Application Programming Interface) immer wichtiger geworden. Die API ist eine Brücke für die Kommunikation zwischen verschiedenen Anwendungen. Sie kann Datenaustausch, Funktionsaufrufe und andere Vorgänge realisieren und bietet Entwicklern eine relativ einfache und schnelle Entwicklungsmethode. Als hervorragendes PHP-Entwicklungsframework ist das ThinkPHP-Framework effizient, skalierbar und einfach zu verwenden.

See all articles