-
setField更新也是返回影响数据的行数,
与update不同的是setField每次只能更新一个字段
查看全部 -
成员方法(get字段名Attr)[字段名首字母大写]
在model中使用 后面有代码
在controller中use下model中的类(该类需继承model类)
后利用各种查询方法获取数据值
可利用toArray获取改后数据
可利用getData获取改前数据
public function get字段名tAttr($value) { /*($字段名 首字母不用大写)*/ $字段名 = [-1=>'***',0=>'***',1=>'***',2=>'***']; return $字段名[$value]; } public function get字段名Attr($val) { switch($val){ case '1': return "***"; break; case '2': return "***"; break; case ~~: break; default: return "***"; break; } }
查看全部 -
alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。
bind方法用于手动参数绑定,大多数情况,无需进行手动绑定,系统会在查询和写入数据的时候自动使用参数绑定。
cache可以用于select、find、value和column方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。
comment方法 用于在生成的SQL语句中添加注释内容
distinct 方法用于返回唯一不同的值
failException设置查询数据为空时是否需要抛出异常,如果不传入任何参数,默认为开启,用于select和find方法
fetchSql用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法
force 方法用于数据集的强制索引操作
group通常用于结合合计函数,根据一个或多个列对结果集进行分组
having用于配合group方法完成从分组的结果中筛选(通常是聚合条件)数据
join用于根据两个或多个表中的列之间的关系,从这些表中查询数据
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
• INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
• LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
• RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
• FULL JOIN: 只要其中一个表中存在匹配,就返回行
limit主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。ThinkPHP的limit方法可以兼容所有的数据库驱动类的。
Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用:就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAIT(Oracle数据库)
order用于对操作的结果排序。
page是完全为分页查询而诞生的一个人性化操作方法。显而易见的是,使用page方法你不需要计算每个分页数据的起始位置,page方法内部会自动计算
partition 方法用于是数据库水平分表
sequence方法用于pgsql数据库指定自增序列名,其它数据库不必使用
strict方法用于设置是否严格检查字段名,如果开启字段严格检查的话,在更新和写入数据库的时候,一旦存在非数据表字段的值,则会抛出异常
table方法主要用于指定操作的数据表。
union操作用于合并两个或多个 SELECT 语句的结果集。
查看全部 -
<!-- Db::name -->
Db::name('不加前缀数据库名')->insert($一维数组) 返回值是影响记录的行数
Db::name('不加前缀数据库名')->insertGetId($一维数组) 返回ID
Db::name('不加前缀数据库名')->insertAll($二维数组) 返回成功插入行数
<!-- Db::table 方法同上 -->
Db::table('据库名')->insert($一维数组);
或者用SQL语句插入Db::execute(SQL语句)
二维数组[
0 =>一维数组[key=>value]
]
查看全部 -
Db::table('数据库表名')->对象名 条件->where(key, value) 表名:查询值 不知能否添加条件判断,还是只能原生添加?
select ();返回所有记录 返回的结果是一个二维数组,不存在返回空数组
column(key, value) 返回列一维数组,key默认查询名,若存在第二个参数,则进行键值映射,value查询名,不存在返回空数组
find() 返回一条记录,返回的结果是一个一维数组,不存在返回NULL
value() 返回一条记录,并且是字条记录的某个字段值,结果不存在返回NULL
Db::name('不需前缀的表名') 开发中一般使用这个 其余参数同上
助手函数:db('不需前缀的表名') 功能同上,只是这种使用方法每次使用都需要实例化
Db::content() 数据库连接(惰性连接)
Db::query("SQL语句???", [value1, value2, value3]) 数据库语句(原生)
Db::execute("SQL语句???", [value1, value2, value3]) 数据库插入语句,返回影响条数(原生)
查看全部 -
use think\Db;
$db = Db::name('table');
$db->insert($data); //返回值是影响记录的行数 插入数
$db->insertGetId($data); //返回插入数的自增id
$db->insertAll($data); //返回插入的成功行数
查看全部 -
// $res = User::create([ // 'username' => 'imooc', // 'password' => md5('imooc'), // 'email' => 'imooc@qq.com', // 'num' => 100, // 'demo' => 123 // ], ['username', 'email']); // $userModel = new User; // $userModel->username = '17771258'; // $userModel->email = '17771258@qq.com'; // $userModel->password = md5('17771258'); // $userModel->save(); // $userModel = new User; // $res = $userModel // ->allowField('username') // ->save([ // 'username' => 'imooc1', // 'password' => md5('imooc1'), // 'demo' => 123 // ]); $userModel = new User; $res = $userModel->saveAll([ ['email'=> '17771258@qq.com'], ['email'=> '17771259@qq.com'] ]); foreach($res as $val) { dump($val->toArray()); } //dump($res); //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);
查看全部 -
删除:
delete(' ');函数 删除 没有条件是不会执行操作的
#delete('') 返回影像记录的行数 加where()条件,或者delete(''主键的值);
$res=$db->where(['id'=>2])->delete();
$res=$db->delete(1);括号里是主键id的值;
如果where("1=1")的话会删除所有记录(慎用)只要where每次接收到的是true就可以;就会全部删除
$res=$db->where("1=1")->delete( );
查看全部 -
Db::方法 因为是单例模式 不会重复实例化 而用db驻守函数会每次实例化,消耗内存,所以在后面加上false,这样db('表名',[],false)就不会每次实例化了
查看全部 -
全局添加更新时间需要在表中新建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";//设置自定义的软删除字段 }
查看全部 -
$sql = $db->where('id','exp','not in (1,2,3)')->bulidSql();
查看全部 -
eq = neq <> lt < elt <= gt > egt >= between notbetween in not in
$sql = $db->where("id",'lt','3')->buildSql();
$sql = $db->where('id','between','3,4')->buildSql();
$sql = $db->where('id','in',[1,2,3,41])->bulidSql();//in和between第三个参数可为数组或者字符串
查看全部 -
#使用sql语句方式查询数据库
//$res = Db::query("select *from imooc_user where id=?",[1]);
$res =Db::execute("insert into imooc_user set username=?,password?,email=?",['imooc',md5('imooc'),'imooc@qq.com']);
#selsect 返回所有记录 返回的结果是一个二维数组
#如果结果不存在 返回一个空数组
$res = Db::table('imooc_user')->select();
#find 返回一条记录 返回的结果是一个二维数组
#如果结果不存在返回NULL
$res = Db::table('imooc_user')->where(['id'=>10])->find();
#value 返回一条记录 并且是每条记录的某个字段值
#如果结果不存在 返回NULL
$res = Db::table('imooc_user')->value('username');
#column 返回一个一维数组 数组中的value值就是我们要获取的列的值
#如果存在第二个参数 就返回这个数组并且用第二个参数的值作为key值
#如果不存在返回NULL
$res = Db::table('imooc_user')->column('username');
#find 返回一条记录 返回的结果是一个二维数组
#如果结果不存在 返回NULL
$res = Db::table('imooc_user')->find();
#value 返回一条记录 并且是字条记录的某个字段值
#如果结果不存在 返回NULL
$res = Db::table('imooc_user')->value('username');
$res = Db::name('user')->select();
实例化
$res = db('user',[],false)->find();
查看全部 -
$res = Db:table('imooc_user')
-> where('id', '>', 10)
-> field('username, id')
-> order('id DESC')
// -> LIMIT(3, 5)
// -> page()
-> group() //order不生效
-> select();
dump($req);
查看全部
举报