ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP5のデータベースとモデルの利用について

ThinkPHP5のデータベースとモデルの利用について

jacklove
jackloveオリジナル
2018-06-15 11:07:385064ブラウズ

1、TP5 データベース アーキテクチャ

ThinkPHP5のデータベースとモデルの利用について

Db:  是TP5操作数据库的入口类。它的作用是为连接数据库做准备,我们只需要在database.php里填写相应的配置即可。
Connection: 是TP5的连接器类,因为TP5支持四种数据库(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封装了一个类来提供统一的调用接口来支持我们连接数据库(这里的连接是惰性连接,只有在执行SQL的时候才会真正连接)。
Query: 查询器,因为不同数据库的SQL语句不同,所以封装了一个Query类来提供统一的接口,以实现不同数据库的CURD操作。查询器是TP5数据访问层的核心,它连接了Connection和Builder。
Builder: 生成器。这个类主要是把Query的查询参数生成相应的sql语句,然后把其返回给Connection供其使用。

2、データベース アクセス

TP5 には、データベース アクセスに 3 つの方法があります:

  1. ネイティブ SQL ステートメント。

Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
  1. クエリ コンストラクター

ThinkPHP5のデータベースとモデルの利用について

上記のクエリ メソッド、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();
  1. モデル

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'])

概要:

  • save (動的) 戻り値: 影響を受けるレコードの数

  • create(static) 戻り値: モデル オブジェクト インスタンス (メソッドは直接呼び出すことができます)

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 を削除します指定されたデータ (静的) 影響を受けるレコードの数

モデルの基本的な CURD 操作をマスターしたので、メソッドの違いを要約しましょう:

使用法 Db クラス モデル (動的) モデル (静的) )

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 のデータベースとモデルの使用方法、その他の関連コンテンツについては、php 中国語 Web サイトを参照してください。

関連する推奨事項:

thinkphp5.0 データベース操作のケーススタディ

ThinkPHP5 と ThinkPHP5 の類似点と相違点をいくつか挙げます。 ThinkPHP3

##最も単純な ThinkPhp プロジェクトを作成する

以上がThinkPHP5のデータベースとモデルの利用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。