Heim > Backend-Entwicklung > PHP-Tutorial > ThinkPHP3.1 Schnellstart (4) kohärenter Betrieb

ThinkPHP3.1 Schnellstart (4) kohärenter Betrieb

黄舟
Freigeben: 2023-03-03 17:02:02
Original
1305 Leute haben es durchsucht

Im vorherigen Artikel haben wir die Verwendung der Abfragesprache ausführlich beschrieben, aber die Abfragesprache löst nur das Problem der Abfrage- oder Betriebsbedingungen. Für eine stärkere Zusammenarbeit ist die Verwendung kohärenter Betriebsmethoden erforderlich, die vom Modell bereitgestellt werden.

Einführung

Kontinuierlicher Betrieb kann die Codeklarheit und Entwicklungseffizienz des Datenzugriffs effektiv verbessern und alle CURD-Vorgänge unterstützen. Dies ist auch ein Highlight des ORM von ThinkPHP. Es ist auch relativ einfach zu verwenden. Wenn wir nun die ersten 10 Datensätze einer Benutzertabelle abfragen möchten, die den Status 1 erfüllen, und nach der Erstellungszeit des Benutzers sortieren möchten, lautet der Code wie folgt:

$User->where(' status=1')->order('create_time')->limit(10)->select();

Die Methoden where, order und limit Hier werden kohärente Operationsmethoden genannt. Abgesehen davon, dass die Auswahlmethode an letzter Stelle stehen muss (da die Auswahlmethode keine kohärente Operationsmethode ist), ist die Reihenfolge der Methodenaufrufe für aufeinanderfolgende Operationen nicht äquivalent das Obige:

$User-> ;order('create_time')->limit(10)->where('status=1')->select();

Tatsächlich können nicht nur Abfragemethoden kohärente Operationen verwenden, einschließlich Alle CURD-Methoden können verwendet werden, zum Beispiel:

$User->where('id=1')->field('id ,name,email')->find();$User->where('status=1 and id=1')->delete();

The Die kontinuierliche Operation ist nur für die aktuelle Abfrage oder Operation gültig und wird automatisch alle übergebenen Werte der kohärenten Operation löschen (es gibt einige spezielle kohärente Operationen, die die aktuell übergebenen Werte aufzeichnen, z. B. kohärente Cache-Operationen). Kurz gesagt, die Ergebnisse einer kohärenten Operation werden nicht auf nachfolgende Abfragen übertragen.

Die vom System unterstützten kohärenten Betriebsmethoden sind:


Methode

Funktion

Unterstützte Parametertypen

wo Wird zum Definieren von Abfrage- oder Aktualisierungsbedingungen verwendet. Zeichenfolgen, Arrays und Objekte

Tabelle Wird zum Definieren des Namens der zu bearbeitenden Datentabelle verwendet. Zeichenfolgen und Arrays

Alias ​​Wird zur Angabe der verwendet aktuelle Daten Tabellendefinitionsalias String

Daten Wird zum Zuweisen von Datenobjekten vor dem Hinzufügen oder Aktualisieren von Daten verwendet. Arrays und Objekte

Feld Wird zum Definieren der abzufragenden Felder verwendet (Feldausschlüsse werden unterstützt). Zeichenfolgen und Arrays

order Wird zum Sortieren von Ergebnissen verwendet. Strings und Arrays.

limit. Wird verwendet, um die Anzahl der Abfrageergebnisse zu begrenzen. Strings und Zahlen.

page. Wird für das Abfrage-Paging verwendet (wird zur internen Begrenzung konvertiert ) Zeichenfolgen und Zahlen

Gruppe Wird zur Gruppenunterstützung für Abfragen verwendet. Zeichenfolgen

mit Wird zur Unterstützung von Abfragen verwendet. Zeichenfolgen

join* Wird für Abfragen verwendet. Unterstützt String und Array

Union* Union-Unterstützung für Abfragezeichenfolge, Array und Objekt

distinct Eindeutige Unterstützung für Abfrage-Boolescher Wert

Sperre Verwenden Sie den Sperrmechanismus für den Datenbank-Booleschen Wert

Cache Wird für das Caching von Abfragen verwendet. Unterstützt mehrere Parameter (später im Abschnitt „Cache“ ausführlich beschrieben).

relation. Wird für zugehörige Abfragen verwendet (erfordert Unterstützung für die Assoziationsmodellerweiterung). Zeichenkette

validate. Wird für die automatische Datenüberprüfung verwendet. Array

auto Wird für die automatische Datenvervollständigung verwendet. Array

filter Wird für die Datenfilterung verwendet. String

scope* Wird für den Benennungsbereich verwendet. String, Array

Alle aufeinanderfolgenden Vorgänge werden zurückgegeben Das aktuelle Modellinstanzobjekt (this) und die mit * markierten Objekte unterstützen mehrere Aufrufe.

Verwendung

Da die Verwendung kohärenter Operationen oft die gemeinsame Verwendung mehrerer Methoden beinhaltet, wird die grundlegende Verwendung jeder kohärenten Operation im Folgenden kurz vorgestellt:

WHERE

where Definition für Abfrage- oder Aktualisierungsbedingungen

Verwendung where($where)

Parameter where (erforderlich): Abfrage- oder Vorgangsbedingungen , unterstützt Zeichenfolgen, Arrays und Objekte

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn die where-Methode nicht aufgerufen wird, werden Aktualisierungs- und Löschvorgänge standardmäßig nicht ausgeführt

Where Methode ist die am häufigsten verwendete kohärente Operationsmethode. Weitere Informationen zur Verwendung finden Sie unter: Schnellstart (3) Abfragesprache.


TABELLE

Tabelle definiert den Namen der Datentabelle, die ausgeführt werden soll, und ändert den Namen der Datentabelle dynamisch für die aktuelle Operation. Sie müssen den vollständigen Namen der Datentabelle einschließlich des Präfixes schreiben -Datenbankoperationen

Verwendungstabelle ($table)

Parametertabelle (erforderlich): Datentabellenname, unterstützt den Betrieb mehrerer Tabellen, unterstützt Zeichenfolgen, Arrays und Objekte

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn die Tabellenmethode nicht aufgerufen wird, wird automatisch die Datentabelle abgerufen, die dem Modell entspricht oder durch dieses definiert wird

Verwendungsbeispiel:

$Model->Table('think_user user')-> where('status>1')->select();

Sie können auch bibliotheksübergreifende Operationen in der Tabelle durchführen Methode, zum Beispiel:

$Model->Table('db_name.think_user user')->where('status>1')->select();

The Parameter der Table-Methode unterstützen Strings und Arrays. Die Verwendung der Array-Methode:

$Model ->Table(array('think_user'=>'user','think_group'=>'group' ))->where('status>1')->select();

Der Vorteil der Verwendung einer Array-Definition besteht darin, dass Fehler aufgrund von Konflikten zwischen Tabellennamen und Schlüsselwörtern vermieden werden können.
Unter normalen Umständen ist es nicht erforderlich, die Tabellenmethode aufzurufen. Die Datentabelle, die dem aktuellen Modell entspricht oder durch dieses definiert wird, wird standardmäßig automatisch abgerufen.

DATEN

Daten können zum Zuweisen von Datenobjekten vor dem Hinzufügen oder Speichern von Daten verwendet werden

Nutzungsdaten ($data )

Parameter Daten (erforderlich): Daten, unterstützt Arrays und Objekte

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn die Datenmethode nicht aufgerufen wird, wird das aktuelle Datenobjekt aufgerufen genommen Oder übergeben Sie die Daten zum Hinzufügen und Speichern

Verwendungsbeispiel:

$Model->data($data)->add();

$Model -> ;data($data)->where('id=3')->save();

Die Parameter der Data-Methode unterstützen Objekte und Arrays. Wenn es sich um Objekte handelt, werden sie dies tun automatisch in Arrays umgewandelt werden. Wenn Sie die Datenmethode zum Zuweisen eines Werts nicht definieren, können Sie auch die Erstellungsmethode verwenden oder dem Datenobjekt manuell einen Wert zuweisen.

Zusätzlich zum Erstellen von Datenobjekten kann die Datenmethode des Modells auch das aktuelle Datenobjekt lesen,
Zum Beispiel:

$this->find(3);

$data = $this->data();

FELD

Feld wird verwendet, um das abzufragende Feld zu definieren

Verwendungsfeld($field,$exclus=false)

Parameter

Feld (erforderlich): Feldname, unterstützt Zeichenfolgen und Arrays, unterstützt angegebene Feldaliase; Wenn wahr, bedeutet dies explizit oder alle Felder der Datentabelle.

außer (optional): Gibt an, ob ausgeschlossen werden soll. Der Standardwert ist falsch. Wenn wahr, bedeutet dies, dass die definierten Felder alle Felder in der Datentabelle mit Ausnahme der Feldparameterdefinition sind.

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn die Feldmethode nicht aufgerufen wird, werden standardmäßig alle Felder zurückgegeben und Feld (' *'), usw. Wirkung

Verwendungsbeispiel:

$Model->field('id,nickname as name')->select();

$Model->field (array('id','nickname'=>'name'))->select();

Wenn die Feldmethode nicht aufgerufen wird oder der Parameter nicht von übergeben wird Die Feldmethode ist leer, die Verwendung von field( '*') ist äquivalent.
Wenn Sie alle Felder explizit übergeben müssen, können Sie die folgende Methode verwenden:

$Model->field(true)->select();

Aber wir Es wird eher empfohlen, nur die Feldnamen abzurufen, die explizit sein müssen, oder sie mithilfe von Feldausschlussmethoden zu definieren, zum Beispiel:

$Model->field('status',true)-> select();

bedeutet, alle Felder außer Status abzurufen.

ORDER

Order wird zum Sortieren der Operationsergebnisse verwendet

Verwendungsreihenfolge ($order)

Parameter order (erforderlich): Sortierter Feldname, unterstützt Zeichenfolgen und Arrays, unterstützt die Sortierung mehrerer Felder

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn die order-Methode nicht aufgerufen wird, ist der Standardwert der Datenbank wird verwendet. Regeln

Verwendungsbeispiel:

order('id desc')

Die Sortiermethode unterstützt das Sortieren mehrerer Felder

order(' status desc, id asc')

Die Parameter der order-Methode unterstützen Strings und Arrays. Die Verwendung von Arrays ist wie folgt:

order(array('status'=>'desc ','id'))

LIMIT

Limit wird verwendet, um die Grenze der abzufragenden Ergebnisse zu definieren (unterstützt alle Datenbanktypen)

Nutzungslimit ($limit)

Parameterlimit (erforderlich): Mengenbegrenzung, unterstützt Zeichenfolge

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Wenn das Limit Wenn die Methode nicht aufgerufen wird, bedeutet dies, dass es keine Begrenzung gibt

Beachten Sie, dass es kein Limit gibt, wenn die Limit-Methode nicht aufgerufen wird.
Wir wissen, dass die Limit-Nutzung für verschiedene Datenbanktypen unterschiedlich ist, aber es gibt immer eine einheitliche Methode bei der ThinkPHP-Nutzung, nämlich Limit („Offset, Länge“), unabhängig davon, ob es sich um eine MySQL-, SqlServer- oder Oracle-Datenbank handelt, ist die Datenbanktreiberklasse des Systems für die Lösung dieses Unterschieds verantwortlich.
Verwendungsbeispiel:

limit('1,10')

kann auch folgendermaßen geschrieben werden, was äquivalent ist:

limit(1,10 )

Wenn die Verwendung von

limit('10')

äquivalent zu

limit('0,10')

ist SEITE

Seite wird verwendet, um die abzufragende Datenseite zu definieren

Nutzungsseite ($page)

Parameterseite (erforderlich): Paging, unterstützt Zeichenfolge

Rückgabewert Aktuelle Modellinstanz

Anmerkungen Keine

Die Seitenoperationsmethode ist eine neue Funktion, mit der Paging-Abfragen schneller durchgeführt werden können. Die Verwendung der
Page-Methode ähnelt der Limit-Methode. Das Format ist:

Page('page[,listRows]')

Page stellt die aktuelle Anzahl der Seiten dar. und listRows stellt die auf jeder Seite angezeigte Anzahl von Datensätzen dar. Beispiel:

Seite('2,10')

bedeutet, dass bei der Anzeige von 10 Datensätzen auf jeder Seite die Daten auf Seite 2 abgerufen werden.
Die folgende Schreibmethode ist äquivalent:

Page(2,10);

listRow Wenn nicht geschrieben, wird der Wert von limit('length') gelesen, zum Beispiel:

limit(25)->page(3);

bedeutet, dass bei Anzeige von 25 Datensätzen auf jeder Seite die Daten auf Seite 3 abgerufen werden.
Wenn kein Limit festgelegt ist, werden standardmäßig 20 Datensätze pro Seite angezeigt. Die
page-Methode fügt Unterstützung für einen zweiten Parameter hinzu, zum Beispiel:

$this->page(5,25)->select();

und vorherige Verwendung

$this->limit('5,25')->select();

Äquivalent.

GROUP

Gruppengruppenabfrageunterstützung für Datenbank

Verwendungsgruppe ($group)

Parameter Gruppe (erforderlich): Feldname der Gruppe, unterstützt Zeichenfolge

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Keine

Verwendungsbeispiel:

group ('user_id ')

Die Parameter der Group-Methode unterstützen nur die Zeichenfolge

HAVING

having Die Haveing-Abfrage für die Datenbank unterstützt

Verwendung have($having)

Parameter have (erforderlich): have, unterstützt Zeichenfolge

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Keine

Verwendungsbeispiel:

having('user_id>0')

Die Parameter der Using-Methode unterstützen nur Zeichenfolgen

JOIN

Join unterstützt Join-Abfrage für Datenbank

Verwendung join($join)

Parameter Join (erforderlich): Join-Vorgang, unterstützt Strings und Array

Rückgabewert Aktuelle Modellinstanz

Bemerkungen Die Join-Methode unterstützt mehrere Aufrufe

Verwendungsbeispiel:

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();

Die LEFT JOIN-Methode wird standardmäßig verwendet, wenn Sie sie verwenden müssen other Die JOIN-Methode kann in

$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();

if join geändert werden method Wenn der Parameter ein Array ist, kann die Join-Methode nur einmal verwendet werden und nicht mit der String-Methode gemischt werden.
Zum Beispiel:

join(array('work ON artist.id = work.artist_id','card ON artist.card_id = card.id')))

UNION

Union Union Union-Abfrageunterstützung für Datenbank

Usage Union($union,$all=false)

Parameter Union (erforderlich) : Union-Operation, unterstützt Zeichenfolgen, Arrays und Objekte
alle (optional): Gibt an, ob die UNION-ALL-Operation verwendet werden soll, der Standardwert ist „false“

Rückgabewert aktuelle Modellinstanz

Anmerkungen Union-Methode Unterstützung mehrere Aufrufe

Verwendungsbeispiel:

$Model->field('name')

->table('think_user_0')

- >union('SELECT name FROM think_user_1')

-->union('SELECT name FROM think_user_2')

->select();

Array Verwendung:

$Model->field('name')

->table('think_user_0')

->union(array('field ' =>'name','table'=>'think_user_1'))

      ->union(array('field'=>'name','table'=>'think_user_2')))

      ->select();

或者

$Model->field('name')

      ->table('think_user_0')

      ->union(array('SELECT name FROM think_user_1','SELECT name FROM think_user_2'))

      ->select();

支持UNION ALL 操作,例如:

$Model->field( 'name')

      ->table('think_user_0')

      ->union('SELECT name FROM think_user_1',true)

      ->union( 'SELECT name FROM think_user_2',true)

      ->select();

或者

$Model->field('name')

      ->table('think_user_0')

      ->union(array('SELECT name FROM think_user_1','SELECT name FROM think_user_2'),true)

      -> Select();列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同.

DISTINCT

distinct 查询数据的时候进行唯一过滤

用法    distinct($distinct)    

参数    distinct(必须):是否采用distinct,支持布尔值    

返回值    当前模型实例    

备注    无    

使用示例:

$Model->Distinct(true)->field('name')->select();

LOCK

lock 用于查询或者写入锁定

用法    lock($lock)    

参数    lock(必须):是否需要锁定,支持布尔值    

返回值    当前模型实例    

备注    beitreten方法支持多次调用    

Sperren方法是用

lock(true)

就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAIT(Oracle数据库).

VALIDATE

validate 自动验证自动验证定义    

返回值    当前模型实例    

备注    只能和create方法配合使用    

validate方法用于

AUTO

auto 用于数据自动完成

用法    auto($auto)    

参数    auto(必须):定义自动完成    

返回值    当前模型实例    

备注    auto方法只能配合create方法使用   

auto方法用于数据的自动完成操作,具体使用我们会在数据自动完成部分描述.

SCOPE

scope   scope($scope)

参数    scope(必须):命名范围定义    

返回值    当前模型实例    

备注   scope方法其实是连贯操作的预定义    

scope方法的具体用法可以参考:3.1的新特性 命名范围

FILTER

Filter. 用于数据的安全过滤

用法    filter($filter)    

参数    filter(必须):过滤方法名    

返回值    当前模型实例    

备注    filter方法一般用于写入和更新操作    

filter方法用于对数据对象的安全过滤,例如:

$Model->data($data)->filter('strip_tags')->add();

目前filter方法不支持多个方法的过滤.

总结

连贯操作为我们的数据操作带来了很大的便捷之处, 并且只要SQL可以实现的操作, 基本上都可以用ThinkPHP的连贯操作来实现, 并且不用考虑数据库之间的表达差异具有可移植性.后面会和大家讲解如何操作和获取变量.

Das Obige ist der Inhalt des kontinuierlichen Betriebs von ThinkPHP3.1 Quick Start (4). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Quelle:php.cn
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