-
#使用sql语句的方式查询数据库
// $res = Db::query("select * from user where id=?",[5]);
#插入语句
// $res = Db::execute("insert into user set password=?,username=?,name=?,age=?",[
// md5('password'),
// 'bhfhgvbv',
// 'love',
// '22'
// ]);
#select 返回所有记录 返回的结果是一个二维数组
// $res = Db::table('user')->select();
#如果结果不存在 返回一个空数组
// $res = Db::table('user')->where([
// 'id' => '100'
// ])->select();
#find 返回一条记录 返回的结果是一个一维数组
#如果结果不存在 返回一个空数组
// $res = Db::table('user')->find();
#value 返回一条记录 并且是这条记录的某个字段值
#如果结果不存在 返回NULL
// $res = Db::table('user')->value('name');
#column 返回一个一维数组,数组中的value值就是我们要获取的列的值
#如果存在第二个参数 就返回这个数组并且用第二个参数作为数组的key值
#如果结果不存在 返回一个空数组
// $res = Db::table('user')->column('name','username');
// $res = Db::name('user')->select();
$res = db('user',[],false)->find();
dump($res);
查看全部 -
数据库的链接
#第一种方式
dump(config('database'));
$res=Db::connect([
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'test',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => 'root_pw',
// 数据库连接端口
'hostport' => '',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
]);
dump($res);
#第二种方式
$res = Db::connect("mysql://root_xn:root@127.0.0.1:3306/course#utf8");
dump($res);
#第三种方式
$res=Db::connect('db_config01');
dump($res);
查看全部 -
Db类查询的操作
查看全部 -
全局添加更新时间需要在表中新建create_time和update_time字段,配置文件中设置“auto_timestamp"=>true,一般不开启这个功能,否则表中不存在该字段时会报错,真正删除需要把destroy方法或delete方法的第二个参数设置为true
use think\Model; use traits\model\SoftDelete; class User extends Model{ use SoftDelete;使用软删除 protected $autoWriteTimestamp = true;//开启自动更新时间 protected $createTime = false;//设置为false代表不使用创建时间 protected $updateTime = "update_at";//设置自定义更新时间的字段 protected $deleteTime = "delete_at";//设置自定义的软删除字段}
查看全部 -
set+字段名+Attribute
auto (新增及更新的时候自动完成的属性数组)
insert(仅新增的时候自动完成的属性数组)
update(仅更新的时候自动完成的属性数组)
查看全部 -
可利用toArray获取改后数据
可利用getData获取原始数据查看全部 -
count User::count(); 获取数据总条数
max User::max('字段名') 获取指定字段值的最大值
sum User::sum('字段名') 获取指定字段值的总和
avg User::avg('字段名') 获取指定字段值的平均值
min User::min('字段名') 获取指定字段值的最小值
都可以和where条件合作
查看全部 -
<?php namespace app\index\controller; use think\Controller; use app\index\model\User; class index extends Controller{ public function index(){ $res = User::destroy(function($query){ $query->where('id','>',5); });//可以传ID值或者闭包函数作为条件 dump($res); $userModel = User::get(7); $userModel->delete(); $res = User::where("1=1") ->delete(); dump($res); } }
查看全部 -
tp里面更新数据的两种方式
1.
$model::where(array('字段'=>'值'))->update(array($change));
或者如图所示;
<?php namespace app\index\controller; use think\Controller; use app\index\model\User; class Index extends Controller{ $data = []; for($i=1;$i<21;$i++){ $data[] = [ 'username'=>'zhangsan_'.$i, 'password'=>md5('sdfa'._$i), 'age'=>$i]; $userModel = new User; $userModel->saveAll($data); dump($res); $res = User::update([ 'username'=>'wangba', 'age'=>15, 'id'=>15],function($query){ $query->where('id','LT',5);});//如果第一个参数不包含条件ID,第二个参数应该设置ID值或指闭包函数为更新条件 dump($res); $res = User::where('id','<',6)->update([ 'username'=>'hehe']); $userModel = User::get(1); $userModel->username = "123"; $userModel->age = 110; $usermodel = new User; $res = $userModel->save(['username'=>'huhu'],function($query){ $query->where("id","<","5");}); $res = $usermodel->saveAll([['id'=>1,'username'=>'jingyao'], ['id'=>2,'username'=>'lihong'] ]); } }
查看全部 -
create([],true)自动排除数据库中不存在的字段,,true可为数组,设置为可允许字段的字段名
$userModel=new User;
$userModel->allowfield()->save() 另一种新增字段方式;
create 添加一条数据,有两个参数,第一个为数组,要插入的字段和值,第二个参数为true时自动过滤不存在字段, 或者是以数组形式写入要添加的字段,返回值为对象;
save 添加一条数据,两种书写方法,用allowField(true)来过滤不存在字段,也可以填写以数组的形式添加要添加的字段,返回值为受影响的行数;
saveAll(二维数组) 添加多条数据,返回值为二维数组,value值为对象
<?php namespace app\index\controller; use think\Controller; use app\index\model\User; class Index extends Controller{ public function index(){ $user = User::create([ 'username'=>'zhangsan', 'password'=>md5(123456), 'age'=>13 ],['username','age']);//第二个参数设置为true则只插入数据表中存在的字段,数组是允许插入的字段,不设置插入不存在的字段的时候会报错 dump($res->id);//返回插入的ID $userModel = new User; $userModel->username = "lisi"; $userModel->password = md5('sdfa'); $userModel->save(); dump($userModel->id); $userModel = new User; $res = $userModel->allowField(['username'])->save(["username"=>'wangba','password'=>md5('sdfs'), 'demo'=>123]); $res = $userModel->saveAll([ ['age'=>17],['age'=>18]]); foreach($res as $val){$arr = $val->toArray(); dump($arr); } } }
查看全部 -
使用User::get(function($query)){$query->where()->field()}查询
User::where()->field()->find()查询某一条 返回对象
User::all(function($query){}获取多条记录,使用主键 返回对象
User::where()->field()->limit()->order()->select();多条查询 返回对象
User::where()->value()按字段查询一条 返回的是数组
User::where()->column("email","username")以username为键的数组
代码:
<?php
namespace
app\index\controller;
use
think\Controller;
use
app\index\controller\User;
class
index
extends
Controller{
$res
= User::get(
function
(
$query
){
$query
->where(
"username"
,
"eq"
,
"zhangsan"
)
->filed(
"username,email"
);
});
$res
= User::where(
"id"
,12)
->field(
"id,username"
)->
find();
$res
= User::all(
function
(
$query
){
$query
->where(
"id"
,
"<"
,
"15"
)
->select();
});
$res
= User::where(
'id'
,
'>'
,
"15"
)
->field(
"username,email"
)
->limit(3)
->order(
'id DESC'
)
->select();
foreach
(
$res
as
$val
){
$res
->toArray();
dump(
$val
->toArray());
}
$res
= User::value(
'email'
);
$res
= User::where(
'id'
,
'10'
)->value(
'email'
);
$res
= User::column(
"email"
,
"username"
);
dump(
$res
);
}
查看全部 -
Model的使用方法
use app\模块\model\模型类名
1、$res = 模型类名::get(1);
2、$user = new 模型类名;
$res = $user::get(1);
3、使用Loader
use think\Loader;
$user = Loader::model('模型类名');
$res = $user::get(1);
4、助手函数
$user = model('模型类名');
$res = $user::get(1);
查看全部 -
常用链式操作
原理:Db类的链式方法返回Db对象,可以继续使用Db对象的这些方法对查询数据进行一些条件构造以及范围的选择和排序等等;
$res=$db
->where('id','>',5) 条件ID>5
->field('username','id') 只搜索username和id两个字段
->order('id DESC') order排序 id DESC id倒序
->limit(3,7) limit截取 3,7 从3开始截取7个
->page(3,5) page(m,n)多用于分页//limit分页limit((m-1)*n,n)== m:当前页数,n:每页多少条数据
->group('`group`') //group是关键字,这里用``进行转义
->select(); select( ); 搜索
var_dump($res);
注意:order对group是不起作用的;就是在执行的group进行分组的时候,并不是在你order排序的基础上进行的;
group('字段'),他会根据字段的值为分类标准进行分类,比如字段值为1的单独查出来,字段值为1的单独查出来;
查看全部 -
whereOr 判断条件
e.g.:$sql=$db->where("id","in","1,2,3")->whereOr("username","eq","17771258")->buildSql();
$sql=$db->where([
'id'=>['in',[1,2,3]],
'username'=>'17771258'
])->buildSql();
查看全部 -
buildSql();返回SQL语句
where('字段名','表达式','查询条件');
表达式 含义
EQ、= 等于(=)
NEQ、<> 不等于(<>)
GT、> 大于(>)
EGT、>= 大于等于(>=)
LT、< 小于(<)
ELT、<= 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询( 'id','in' ,'1,5,8'( [1,5,8] ) )
[NOT] NULL 查询字段是否(不)是NULL
[NOT] EXISTS EXISTS查询
EXP 表达式查询,支持SQL语法
> time 时间比较
< time 时间比较
between time 时间比较
notbetween time 时间比较
<!-- Db::table -->
Db::table('据库名')->where()->buildSql();
<!-- Db::name 方法同上 -->
Db::name('不戴前置数据库名')->where()->buildSql();
查看全部
举报