ThinkPHP は、オープンソースの PHP ベースの Web アプリケーション フレームワークで、クエリ ステートメントの構築と実行など、便利な開発のための多くのツールとソリューションを提供します。この記事では、開発者がデータベース操作をより効率的に実行できるように、クエリ ビルダーとデータ モデルを含む ThinkPHP のクエリ ステートメント機能を紹介します。
1. クエリ ビルダー
ThinkPHP のクエリ ビルダーは、複雑な SQL ステートメントを迅速に構築するために使用されるオブジェクト指向 SQL ステートメント ビルダーのセットです。クエリ ビルダーでは、いくつかの方法を使用して、SELECT、UPDATE、INSERT、および DELETE タイプの SQL ステートメントを構築できます。
SELECT クエリ ステートメントを使用して、データベース内のデータを取得します。クエリ ビルダーの select() メソッドを使用して、SELECT クエリ ステートメントを構築できます。
// 查询所有用户数据 Db::name('user')->select(); // 查询 id 为 1 的用户数据 Db::name('user')->where('id', 1)->find(); // 查询年龄大于 18 岁的用户数据 Db::name('user')->where('age', '>', 18)->select();
上記のコードでは、 Db::name('user') はクエリ対象のデータ テーブルを表します。 select() メソッドはすべてのデータのクエリを示し、find() メソッドは単一レコードのクエリを示します。
UPDATE クエリ ステートメントを使用して、データベース内のデータを更新します。クエリ ビルダーの update() メソッドを使用して、UPDATE クエリ ステートメントを構築できます。
// 更新 id 为 1 的用户数据 Db::name('user')->where('id', 1)->update(['name' => 'Tom']); // 将所有用户的角色都更新为 2 Db::name('user')->update(['role_id' => 2]);
update() メソッドでは、最初のパラメータは更新されるレコードの条件を表し、2 番目のパラメータは更新されるレコードの条件を表します。更新データの内容です。
INSERT クエリ ステートメントを使用して、新しいデータをデータベースに挿入します。クエリ ビルダーの insert() メソッドを使用して、INSERT クエリ ステートメントを構築できます。
// 向 user 表中插入一条新数据 Db::name('user')->insert(['name' => 'Jack', 'age' => 20, 'role_id' => 1]);
insert() メソッドのパラメータは、挿入される新しいデータ コンテンツです。
DELETE クエリ ステートメントを使用して、データベース内のデータを削除します。クエリ ビルダーの delete() メソッドを使用して、DELETE クエリ ステートメントを作成できます。
// 删除 id 为 1 的数据 Db::name('user')->where('id', 1)->delete(); // 删除所有角色为 3 的用户数据 Db::name('user')->where('role_id', 3)->delete();
delete() メソッドのパラメータは、削除されるレコードの条件です。
2. データ モデル
クエリ ビルダーに加えて、ThinkPHP は、データ テーブルをクラスにマッピングできる、データ モデルに基づくデータベース操作メソッドのセットも提供します。クラス属性の変更に基づいてデータベース レコードの CRUD を自動的に処理します。
次のコードを使用してデータ モデル クラスを定義できます:
namespace app\common\model; use think\Model; class User extends Model { // 数据表名 protected $table = 'user'; // 自动写入时间戳 protected $autoWriteTimestamp = true; // 模型关联:用户角色 public function role() { return $this->belongsTo(Role::class, 'role_id'); } }
上の例では、 think を継承します。 \Model クラスはユーザー データ モデル クラスを定義します。 $table 属性はマップされるデータ テーブルの名前を示し、$autoWriteTimestamp 属性はタイムスタンプを自動的に書き込むかどうかを示します。
データ モデルの find()、select()、where() およびその他のメソッドを使用して、データベースにクエリを実行できます。
// 查询 id 为 1 的用户数据 $user = User::find(1); // 查询用户表中所有数据 $users = User::select(); // 查询年龄大于 18 岁的用户数据 $users = User::where('age', '>', 18)->select();
// 更新 id 为 1 的用户数据 $user = User::find(1); $user->name = 'Tom'; $user->save(); // 向 user 表中插入一条新数据 $user = new User; $user->name = 'Jack'; $user->age = 20; $user->role_id = 1; $user->save();
// 删除 id 为 1 的用户数据 $user = User::find(1); $user->delete(); // 删除所有角色为 3 的用户数据 User::where('role_id', 3)->delete();
以上がthinkphpのクエリ文の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。