thinkphp 5データベース操作の概要

3179 ワード

thinkphp 5はデータベース操作を細かくカプセル化していますが、thinkphp 3と比較すると、クエリーデータの面で保持するのが一番よく、where、order、find、selectなどの基本的な操作もサポートされていますが、getFieldなどはサポートされていません.以下、データの変更・削除についてまとめます.
1、データを増やす:
addメソッドは削除され、insertGetIdに置き換えられます.すなわち、挿入は自己増加id(stringタイプ)を返し、そうでなければfalseを返します.
Db::name('user')->insertGetId(['username' => 'admin']);
insertも使用できますが、成功して1を返し、失敗してfalseを返します.このとき自己増加idを取得するにはgetLastInsiID()で取得する必要があるが,stringタイプであることに注意する.例:
Db::name('user')->insert($data); $userId = Db::name('user')->getLastInsID();
 
2、データを修正し、前のsaveの代わりにupdateを使用します.使い方は同じです.例えば:
$lines = Db::name('test')->where(['id' => ['gt', 0]])->update($data);
返されるローの数も影響を受けます.
 
モデルクラスModelを継承する場合、モデルクラスでは、次のようにデータを更新することもできます.
saveメソッド、使い方は以下の通りです.
$user = new User;
// save            
$user->save([
    'name'  => 'thinkphp',
    'email' => '[email protected]'
],['id' => 1]);

3、データの削除
以前と同じ:
Db::table('think_user')->where('id',1)->delete();

アシスタント関数は次のように使用できます.
//       
db('user')->delete(1);
//         
db('user')->where('id',1)->delete();

 
モデルレイヤの場合は、次の方法で削除できます.
User::destroy(1);
//           
User::destroy('1,2,3');
//   
User::destroy([1,2,3]);
//      0   
User::destroy(['status' => 0]);
User::destroy(function($query){
    $query->where('id','>',10);
});
User::where('id','>',10)->delete();

 
4、クエリーデータ:
クエリーデータはさらにtp 3とほぼ同じですが、fieldメソッドがcolumnに変更され、getFieldがvalueに変更された点に注意してください.
これらの状況から見ると、thinkphp 5は茴香豆の4つの書き方を新たな高さに発揮しています.そのうちの1つだけを使うことができますが、コードを見るときは、いろいろな方法でデータを削除して変更していることを理解することができますよ.
ドキュメントアドレス参照:http://www.kancloud.cn/manual/thinkphp5/135190
 
5、ビッグデータ処理、jsonデータ照会:
これは良い新しい特性です.参考:http://www.kancloud.cn/manual/thinkphp5/135176ただし、jsonデータクエリはmysql 5である必要があります.7.9以降.参照:https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#operator_json-column-path 
6、sql文クエリはbindを使うことができる:
Db::table('think_user')->where("id=:id and username=:name")->bind(['id'=>[1,\PDO::PARAM_INT],'name'=>'thinkphp'])->select();

 
また、アシスタント関数は単一の例ではありません.
注:dbアシスタント関数を使用すると、デフォルトでは毎回データベースに再接続されますが、Db::nameまたはDb::tableメソッドを使用すると、単一の例になります.db関数は、同じリンクを使用する必要がある場合、次のような3番目のパラメータを入力できます.
db('user',[],false)->where('id',1)->find();
db('user',[],false)->where('status',1)->select();

上記の方法では、同じデータベース接続が使用され、2番目のパラメータはデータベースの接続パラメータであり、空のままでは、データベースプロファイルを使用した構成を示します.