次のチュートリアル コラムでは、ThinkPHP データベース操作の集計クエリ、時間クエリ、および高度なクエリを紹介します。 集計クエリ
アプリケーションでは、現在のすべてのユーザー (または特定の条件を満たすユーザー) の数などの統計データを使用することがよくあります。 、すべてのユーザーの最大ポイント、ユーザーの平均スコアなど。ThinkPHP には、これらの統計操作のための一連の組み込みメソッドが用意されています。
使用例:ユーザー数を取得する:
Db::table('think_user')->count(); // 助手函数 db('user')->count();
またはフィールド統計に従って:
Db::table('think_user')->count('id'); // 助手函数 db('user')->count('id');
ユーザーの最大ポイントを取得する:
Db::table('think_user')->max('score'); // 助手函数 db('user')->max('score');
最小ポイントを取得するポイントが 0 より大きいユーザーの数:
Db::table('think_user')->where('score>0')->min('score'); // 助手函数 db('user')->where('score>0')->min('score');
ユーザーの平均ポイントを取得する:
Db::table('think_user')->avg('score'); // 助手函数 db('user')->avg('score');
ユーザーの合計スコアに関する統計:
Db::table('think_user')->sum('score'); // 助手函数 db('user')->sum('score');
#時間クエリ
#時間比較
#where メソッド where を使用する
このメソッドは時間比較をサポートしています。例: // 大于某个时间
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']);
whereTime メソッドを使用する
whereTime メソッドは、日付と時刻のフィールドに対する簡単なクエリを提供します。例は次のとおりです。 // 大于某个时间
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();
// 查询两个小时内的博客 db('blog') ->whereTime('create_time','2 hours') ->select();
高度なクエリ
クイック クエリ
クイック クエリ メソッドは、複数のフィールドに同じクエリ条件を記述する簡素化された方法です。これにより、クエリ条件の記述がさらに簡素化されます。複数のフィールドを区切るには | を使用して OR クエリを表します。AND クエリを区切るには & を使用します。たとえば、次のクエリを実装できます:
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
インターバル クエリは、複数のクエリの一種です。同じフィールド クエリ条件 の簡略化された記述方法、例: Db::table('think_user') ->where('name',['like','thinkphp%'],['like','%thinkphp']) ->where('id',['>',0],['<>',10],'or') ->find();
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();
バッチ クエリ
複数の条件を使用してバッチ条件付きクエリを定義できます。例: 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); });
生成される SQL ステートメントは次のとおりです: 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);
#混合クエリ
上記のすべての方法を組み合わせて、混合クエリを実行できます。 :
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();
Db::table('think_user') ->where('id > :id AND name LIKE :name ',['id'=>0, 'name'=>'thinkphp%']) ->select();
Db::table('think_user') ->where('name','like','%think%') ->where('name','like','%php%') ->where('id','in',[1,5,80,50]) ->where('id','>',10) ->find();
V5.0.5 バージョンには、クエリを簡略化するための一連のショートカット メソッドが追加されました。
以上がThinkPHP データベース操作集計クエリ、時間クエリ、高度なクエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。