Operation database is the basis for project operation, and TP5 provides us with very convenient operation methods. This article shares how TP5 operates the database and explains it through examples. I hope it will be helpful to everyone.
setField updates the value of a field
1
$User = M("User"); // 实例化User对象 // 更改用户的name值 $User-> where('id=5')->setField('name','ThinkPHP');
2 The setField method supports updating multiple fields at the same time. You only need to pass in an array, for example:
$User = M("User"); // 实例化User对象 // 更改用户的name和email的值 $data = array('name'=>'ThinkPHP','email'=>'ThinkPHP@gmail.com'); $User-> where('id=5')->setField($data);
For the update of statistical fields (usually numeric types), the system also provides setInc and setDec methods.
$User = M("User"); // 实例化User对象 $User->where('id=5')->setInc('score',3); // 用户的积分加3 $User->where('id=5')->setInc('score'); // 用户的积分加1 $User->where('id=5')->setDec('score',5); // 用户的积分减5 $User->where('id=5')->setDec('score'); // 用户的积分减1
Update the data in the data table
Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);
If the data contains the primary key, you can use it directly:
Db::table('think_user')->update(['name' => 'thinkphp','id'=>1]);
The update method returns the number of affected data, without modifying any data Return 0
If the data to be updated requires the use of SQL functions or other fields, you can use the following method:
Db::table('think_user') ->where('id', 1) ->update([ 'login_time' => ['exp','now()'], 'login_times' => ['exp','login_times+1'], ]);
Update the value of a field:
Db::table('think_user')->where('id',1)->setField('name', 'thinkphp');
setField method Returns the number of affected data. If no data field is modified, returns 0
Increments or decrements the value of a field
setInc/setDec 如不加第二个参数,默认值为1 // score 字段加 1 Db::table('think_user')->where('id', 1)->setInc('score'); // score 字段加 5 Db::table('think_user')->where('id', 1)->setInc('score', 5); // score 字段减 1 Db::table('think_user')->where('id', 1)->setDec('score'); // score 字段减 5 Db::table('think_user')->where('id', 1)->setDec('score', 5);
Delayed update
setInc/setDec supports delay Update, if you need to delay the update, pass in the third parameter
In the following example, delay 10 seconds and add 1 to the score field
Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);
The setInc/setDec method returns the number of affected data
Assistant function
// 更新数据表中的数据 db('user')->where('id',1)->update(['name' => 'thinkphp']); // 更新某个字段的值 db('user')->where('id',1)->setField('name','thinkphp'); // 自增 score 字段 db('user')->where('id', 1)->setInc('score'); // 自减 score 字段 db('user')->where('id', 1)->setDec('score');
Quick update (V5.0.5+)
The data, inc, dec and exp methods encapsulated in V5.0.5+ and above are chain operation methods , can be used in conjunction with update.
The following is an example to illustrate usage:
Db::table('data') ->where('id',1) ->inc('read') ->dec('score',3) ->exp('name','UPPER(name)') ->update();
Related recommendations:
TP5 Auth Permission Management Example
TP5 automatic loading mechanism detailed explanation
The above is the detailed content of TP5 database operations. For more information, please follow other related articles on the PHP Chinese website!