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();
Oder basierend auf Feldstatistiken:
Db::table('think_user')->count('id'); // 助手函数 db('user')->count('id');
Ermitteln Sie die Anzahl der Benutzer Höchstpunktzahl:
Db::table('think_user')->max('score'); // 助手函数 db('user')->max('score');
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');
Durchschnittliche Punktezahl der Benutzer abrufen:
Db::table('think_user')->avg('score'); // 助手函数 db('user')->avg('score');
Statistik der Gesamtpunktzahl der Benutzer:
Db::table('think_user')->sum('score'); // 助手函数 db('user')->sum('score');
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','2016-1-1');
// 时间区间查询
where('create_time','between time',['2015-1-1','2016-1-1']);
// 大于某个时间 db('user') ->whereTime('birthday', '>=', '1970-10-1') ->select(); // 小于某个时间 db('user') ->whereTime('birthday', '<', '2000-10-1') ->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();
// 获取今天的博客 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();
// 获取今天的博客 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();
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();
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();
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' OR `title` LIKE 'thinkphp%') AND ( `create_time` > 0 AND `update_time` > 0 ) LIMIT 1
Die folgende Abfragemethode ist falsch:
Db::table('think_user') ->where('name',['like','thinkphp%'],['like','%thinkphp']) ->where('id',['>',0],['<>',10],'or') ->find();
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
Db::table('think_user') ->where('name',['like','thinkphp%'],['like','%thinkphp']) ->where('id',5,['<>',10],'or') ->find();
Closure query
Db::table('think_user'->'name' => ['like','thinkphp%'], 'title' => ['like','%thinkphp'], 'id' => ['>',0], 'status'=> 1->
SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%' AND `title` LIKE '%thinkphp' AND `id` > 0 AND `status` = '1'
Db::table('think_user')->select(function($query){ $query->where('name','thinkphp') ->whereOr('id','>',10); });
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
$query = new \think\db\Query;$query->name('user') ->where('name','like','%think%') ->where('id','>',10) ->limit(10);
Db::select($query);
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',['<',10],['>',100],'or'); }) ->select();
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp') AND ( `id` < 10 or `id` > 100 )
Db::table('think_user') ->where('id > 0 AND name LIKE "thinkphp%"') ->select();
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!