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
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)!