ThinkPHP-Datenbankoperations-Aggregationsabfrage, Zeitabfrage, erweiterte Abfrage

藏色散人
Freigeben: 2021-01-28 08:54:40
nach vorne
3775 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von thinkphp stellt Ihnen die Aggregationsabfrage, die Zeitabfrage und die erweiterte Abfrage von ThinkPHP-Datenbankoperationen vor. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

Aggregationsabfrage

In Anwendungen verwenden wir häufig einige statistische Daten, z. B. die aktuelle Anzahl der Benutzer (oder diejenigen, die bestimmte Bedingungen erfüllen), die maximale Punktzahl aller Benutzer, die durchschnittliche Punktzahl der Benutzer usw ., ThinkPHP Für diese statistischen Operationen stehen eine Reihe integrierter Methoden zur Verfügung, darunter:

Anwendungsbeispiel:

Ermitteln Sie die Anzahl der Benutzer:

Db::table('think_user')->count();
// 助手函数
db('user')->count();
Nach dem Login kopieren

Oder basierend auf Feldstatistiken:

Db::table('think_user')->count('id');
// 助手函数
db('user')->count('id');
Nach dem Login kopieren

Ermitteln Sie die Anzahl der Benutzer Höchstpunktzahl:

Db::table('think_user')->max('score');
// 助手函数
db('user')->max('score');
Nach dem Login kopieren

Punkte abrufen Die Mindestpunktzahl von Benutzern größer als 0:

Db::table('think_user')->where('score>0')->min('score');
// 助手函数
db('user')->where('score>0')->min('score');
Nach dem Login kopieren

Durchschnittliche Punktezahl der Benutzer abrufen:

Db::table('think_user')->avg('score');
// 助手函数
db('user')->avg('score');
Nach dem Login kopieren

Statistik der Gesamtpunktzahl der Benutzer:

Db::table('think_user')->sum('score');
// 助手函数
db('user')->sum('score');
Nach dem Login kopieren

Zeitabfrage

Zeitvergleich

Verwenden Sie die Where-Methode. Die Where-Methode unterstützt den Zeitvergleich, zum Beispiel:

// 大于某个时间
where('create_time','> time','2016-1-1');
// 小于某个时间
where('create_time','<= time&#39;,&#39;2016-1-1&#39;);
// 时间区间查询
where(&#39;create_time&#39;,&#39;between time&#39;,[&#39;2015-1-1&#39;,&#39;2016-1-1&#39;]);
Nach dem Login kopieren
Der dritte Parameter kann in jedem gültigen Zeitausdruck und Ihrem Zeitfeld übergeben werden Der Typ wird automatisch identifiziert. Zu den unterstützten Zeittypen gehören Zeitstempel, Datum/Uhrzeit, Datum und int.

... , zum Beispiel:

// 大于某个时间
db(&#39;user&#39;)    ->whereTime('birthday', '>=', '1970-10-1')    ->select();
// 小于某个时间
db('user')    ->whereTime('birthday', '<&#39;, &#39;2000-10-1&#39;)    ->select();
// 时间区间查询
db('user')    ->whereTime('birthday', 'between', ['1970-10-1', '2000-10-1'])    ->select();
// 不在某个时间区间
db('user')    ->whereTime('birthday', 'not between', ['1970-10-1', '2000-10-1'])    ->select();
Nach dem Login kopieren

Wenn Sie die Tageszeit, diese Woche, diesen Monat und dieses Jahr abfragen, kann dies auch vereinfacht werden zu:

// 获取今天的博客
db('blog')    ->whereTime('create_time', 'today')    ->select();
// 获取昨天的博客
db('blog')    ->whereTime('create_time', 'yesterday')    ->select();
// 获取本周的博客
db('blog')    ->whereTime('create_time', 'week')    ->select();
// 获取上周的博客
db('blog')    ->whereTime('create_time', 'last week')    ->select();
// 获取本月的博客
db('blog')    ->whereTime('create_time', 'month')    ->select();
// 获取上月的博客
db('blog')    ->whereTime('create_time', 'last month')    ->select();
// 获取今年的博客
db('blog')    ->whereTime('create_time', 'year')    ->select();
// 获取去年的博客
db('blog')    ->whereTime('create_time', 'last year')    ->select();
Nach dem Login kopieren
Ab Version V5.0.5+ können Sie auch die folgende Methode verwenden um die Zeit abzufragen

// 获取今天的博客
db('blog')    ->whereTime('create_time', 'd')    ->select();
// 获取本周的博客
db('blog')    ->whereTime('create_time', 'w')    ->select();
// 获取本月的博客
db('blog')    ->whereTime('create_time', 'm')    ->select();
// 获取今年的博客
db('blog')    ->whereTime('create_time', 'y')    ->select();
Nach dem Login kopieren
Erweiterte Abfrage

Schnellabfrage

Die Schnellabfragemethode ist

eine vereinfachte Möglichkeit, die gleichen Abfragebedingungen in mehreren Feldern zu schreiben

, was kann Vereinfachen Sie das Schreiben von Abfragebedingungen in mehreren Feldern weiter. Verwenden Sie |, um eine ODER-Abfrage zu trennen, und verwenden Sie &, um eine UND-Abfrage zu trennen. Sie können beispielsweise die folgende Abfrage implementieren:

// 查询两个小时内的博客
db('blog')    ->whereTime('create_time','2 hours')    ->select();
Nach dem Login kopieren
 

Schnelle Abfrage unterstützt alle Abfrageausdrücke. Intervallabfrage

Intervallabfrage ist eine vereinfachte Möglichkeit, mehrere Abfragebedingungen für dasselbe Feld zu schreiben

, zum Beispiel:

Db::table('think_user')    ->where('name|title','like','thinkphp%')    ->where('create_time&update_time','>',0)    ->find();
Nach dem Login kopieren
Die generierte SQL-Anweisung lautet:
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%') AND ( `create_time` > 0 AND `update_time` > 0 ) LIMIT 1
Nach dem Login kopieren
 
Intervall Abfrage Abfragebedingungen müssen mithilfe von Arrays definiert werden und alle Abfrageausdrücke werden unterstützt.

Die folgende Abfragemethode ist falsch:

Db::table('think_user')    ->where('name',['like','thinkphp%'],['like','%thinkphp'])    ->where('id',['>',0],['<>',10],'or')    ->find();
Nach dem Login kopieren

Batch-Abfrage

Sie können bedingte Batch-Abfragen mit mehreren Bedingungen definieren, zum Beispiel:

SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp') AND ( `id` > 0 OR `id` <> 10 ) LIMIT 1
Nach dem Login kopieren
Die generierte SQL-Anweisung lautet:
Db::table('think_user')    ->where('name',['like','thinkphp%'],['like','%thinkphp'])    ->where('id',5,['<>',10],'or')    ->find();
Nach dem Login kopieren

Closure query

Db::table('think_user'->'name' => ['like','thinkphp%'],
        'title' => ['like','%thinkphp'],
        'id' => ['>',0],
        'status'=> 1->
Nach dem Login kopieren
Die generierte SQL -Anweisung lautet:

SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 AND `status` = '1'
Nach dem Login kopieren
use query -Objekt Abfrage Sie können das Abfragebobjekt auch im Voraus zusammenschließen und in die Auswahlmethode übergeben, z. B.

Db::table('think_user')->select(function($query){    $query->where('name','thinkphp')            ->whereOr('id','>',10);
});
Nach dem Login kopieren
f Wenn Sie „Abfrage für Objekte“ verwenden, sind alle vor der Auswahlmethode aufgerufenen Kettenoperationen ungültig.

Gemischte Abfrage

Sie können alle zuvor genannten Methoden kombinieren, um gemischte Abfragen durchzuführen, zum Beispiel:

SELECT * FROM `think_user` WHERE `name` = 'thinkphp' OR `id` > 10
Nach dem Login kopieren
Die generierte SQL-Anweisung lautet:
$query = new \think\db\Query;$query->name('user')    ->where('name','like','%think%')    ->where('id','>',10)    ->limit(10);
Db::select($query);
Nach dem Login kopieren

String-Bedingung. Abfrage

Für einige wirklich komplexe Abfragen können Sie auch direkt native SQL-Anweisungen zum Abfragen verwenden, wie zum Beispiel:

Db::table('think_user')    ->where('name',['like','thinkphp%'],['like','%thinkphp'])    ->where(function($query){        $query->where('id',['<&#39;,10],[&#39;>',100],'or');
    })    ->select();
Nach dem Login kopieren
Aus Sicherheitsgründen können wir Parameterbindung für Zeichenfolgenabfragebedingungen verwenden, wie zum Beispiel:
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp') AND ( `id` < 10 or `id` > 100 )
Nach dem Login kopieren
V5.0.4+ Beginnend ThinkPHP unterstützt das mehrfache Aufrufen von Abfragebedingungen für dasselbe Feld, zum Beispiel:

Db::table('think_user')    ->where('id > 0 AND name LIKE "thinkphp%"')    ->select();
Nach dem Login kopieren
Shortcut-Methode (V5.0.5+)

V5.0.5+ hat eine Reihe von Verknüpfungsmethoden hinzugefügt, um Abfragen zu vereinfachen, darunter:

Das obige ist der detaillierte Inhalt vonThinkPHP-Datenbankoperations-Aggregationsabfrage, Zeitabfrage, erweiterte Abfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!