Db: 是TP5操作数据库的入口类。它的作用是为连接数据库做准备,我们只需要在database.php里填写相应的配置即可。
Connection: 是TP5的连接器类,因为TP5支持四种数据库(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封装了一个类来提供统一的调用接口来支持我们连接数据库(这里的连接是惰性连接,只有在执行SQL的时候才会真正连接)。
Query: 查询器,因为不同数据库的SQL语句不同,所以封装了一个Query类来提供统一的接口,以实现不同数据库的CURD操作。查询器是TP5数据访问层的核心,它连接了Connection和Builder。
Builder: 生成器。这个类主要是把Query的查询参数生成相应的sql语句,然后把其返回给Connection供其使用。
TP5 には、データベース アクセスに 3 つの方法があります:
ネイティブ SQL ステートメント。
Db::query('select * from think_user where id=?',[8]); Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
クエリ コンストラクター
上記のクエリ メソッド、find、select、insert、update、delete はすべてクエリ操作であり、その他の補助操作はオブジェクトを返し、チェーン呼び出しをサポートします。ただし、クエリ操作が実行されると、それ以上呼び出すことはできません。
異なる補助演算の順序は影響しませんが、同じ補助演算の順序は影響します。
不同的辅助操作,先后顺序没影响。Db::table('banner')->where('id', '>', '2')->order('update_time asc')->select();Db::table('banner')->order('update_time asc')->where('id', '>', '2')->select();
相同的查询操作,先后顺序有影响。 $list = Db::table('data') ->where('id', '>', 1) ->where('name', 'like', '%think%') ->order('id', 'desc') ->order('create_time', 'desc') ->limit(8) ->select(); $list = Db::table('data') ->where('name', 'like', '%think%') ->where('id', '>', 1) ->order('create_time', 'desc') ->order('id', 'desc') ->limit(8) ->select();
モデル
ORM オブジェクト リレーショナル マッピング オブジェクト リレーショナル マッピング
は、モデル テーブルを通じてデータベースにマッピングされます。その後、モデルを操作してデータベースを操作します。
クエリ コンストラクターと比較します
// 查询操作$user = Db::table('user')->find(1);// 取值操作echo $user['name'];echo $user['email'];// 设置操作$user['name'] = 'topthink';$user['email'] = 'thinkphp@qq.com';// 更新操作Db::table('user')->update($user);
モデル操作の場合は、次のコードに対応して実装できます
// 查询操作$user = User::get(1);// 取值操作echo $user->name; echo $user->email;// 设置操作$user->name = 'topthink';$user->email = 'thinkphp@qq.com';// 更新操作$user->save();
これはモデルの外にあり、また、コントローラー内での値の取得と設定の操作ですが、モデル内部では、
// 取值操作echo $user->getData('name'); echo $user->getData('email');// 设置操作echo $user->data('name', 'SpawN'); echo $user->data('email', '123@qq.com');
モデルのCURD操作
Creation# というメソッドを使用しています。
# #データベースの使用法:Db::table('user')->insert([ 'name' => 'spawn', 'email' => '123@qq.com'])モデルの使用法:
$user = new User;$user->save([ 'name' => 'spawn', 'email' => '123@qq.com'])$user = User::create([ 'name' => 'sapwn', 'email' => '123@qq.com'])概要:
Read
Db:$user = Db::table('user')->where('id', 1)->find();Model:
$user = User::get(1);find と select はクエリ コンストラクターのメソッドであり、get と all はモデルのメソッドであることに注意してください。ただし、モデルはクエリ コンストラクターに基づいているため、モデルは find メソッドと select メソッドを呼び出すことができますが、クエリ コンストラクターは get メソッドと all メソッドを呼び出すことはできません。概要:メソッド関数の戻り値
get 単一レコードのクエリ モデル オブジェクト インスタンス
find 単一レコードのクエリ モデル オブジェクト インスタンス
all 主キーに基づいて複数のレコードのクエリ モデル オブジェクト インスタンスを含む配列またはデータ セット
select ベースの複数レコードのクエリ条件付き モデル オブジェクト インスタンスを含む 配列またはデータ セット
Update
Db:Db::table('user')->where('id', 1)->update([ 'name' => 'haha', 'email' => 'heihei@qq.com'])Model:
$user = User::get(1);$user->save([ 'name' => 'haha', 'email' => 'heihei@qq.com']) 或者 User::update([ 'name' => 'topthink', 'email' => 'topthink@qq.com', ], ['id' => 1]);summary: メソッド 関数 戻り値
save 更新データ 影響を受けるレコード数
update 更新データ (静的) モデルオブジェクトインスタンスを返す
#
需要注意的是,模型的更新操作是只更新有变化的数据。性能比较好。
Delete
Db:Db::table('user')->delete(1);Model:
$user = User::get(1);$user->delete(); 或者 User::destory(1);概要: メソッド 関数 戻り値
delete 現在のデータを削除します 影響を受けるレコードの数
destroy を削除します指定されたデータ (静的) 影響を受けるレコードの数
Create insert save create
Update update save update
Read a single find find get
Read multiple select select all
Delete delete delete destroy destroy
ThinkPHP5 と ThinkPHP5 の類似点と相違点をいくつか挙げます。 ThinkPHP3
以上がThinkPHP5のデータベースとモデルの利用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。