Thinkphp6(操作SQL数据库)
Env::get('database.hostname') // 获取env⽂件内容
Env::has('database.hostname') // 判断database.hostn ame 是否存在
Config::get('sql.hostname') // 获取config⽂件⾥的database >
* User是已继承数据库的类
// 数据库 -> 连接
// 继承Model连接的数据库并命名为User
class User extends Model
// 选择已连接数据库不选默认第⼀个已连接数据库
protected $connection = '已连接的数据库名称'
// 数据库 -> 操作
/
/ 预览SQL语句
User::getLastSql();
// 选择数据库 connect
Db::connect('enen')->table('user')->select();
// 原⽣SQL
// 查
User::query('SELECT * FROM user');
// 增删改
User::execute('UPDATE user SET name = '??' WHERE id = 1');
// 增删改查
// 构造器
table(); // 设置数据表
field(); // 设置查询字段
find(); // 返回单挑记录
// 增改通⽤
// save($data); // 存在主键就是修改不存在就是新增
// 增
$data = ['name' => '张三','pass' => '123456'] ; // 添加的数据
// 添加单⾏数据
// 推荐使⽤第⼀种⽅法,没实例化都能使⽤让插⼊
$user2 = UserModel::create(['name' => '新增名','pass' => '新增密码'],['只能写⼊指定的字段和最下⾯那个allowField⼀样(可选)'],'是否⽤replace新增 true是 fa User::name('user')->insert($data); // 添加完后返回新增⼏条数据
User::name('user')->insertGetId($data); // 添加完后返回添加的字段id
// 抛弃不存在的字段并添加数据
User::name('user')->strict(false)->insert($data);
$datas = [['name' => '张三','pass' => '123456'],['name' => '李四','pass' => '123456']];
// 多⾏添加
User::name('user')->strict(false)->insertAll($datas);
// 删
// 根据主键直接删除
User::name('user')->delete(2);
// 根据主键直接删除⼆
User::name('user')->destroy(['id'=>2]); // destroy 运⾏过程:先查询出来后删除,可以闭包
/
/ 根据主键删除多条
User::name('user')->delete([2,4,6]);
// 通过where()
User::name('user')->where('id',2)->delete();
// 改
$data = ['name' => '嗯嗯'];
// 修改单⾏
User::name('user')->where('id','5')->update($data,['id'=>5]); // 写了最后的id=5就不需要where,id=5的那位置只可以写主键
// 查
// 单条数据查询
// 单条数据查询 id为2 没有查询到就返回null
User::table('user')->where('id','2')->find();
// 单条数据查询 id为2 没有查询到就返回空
User::table('user')->where('id','2')->findOrEmpty();
// 单条数据查询 id为2 没有查询到就抛出异常
User::table('user')->where('id','2')->findOrFail();
// 数据集查询
// 查询user表所有内容
User::table('user')->select();
// 查询所有age = 18 没有查询到就返回空
User::table('user')->where('age','18')->select();
// 查询所有age = 18 没有查询到就抛出异常
User::table('user')->where('age','18')->selectOrFail();
// 查询出来的数据转为数组
User::table('user')->select()->toArray();
// 返回id = 2的name字段的值
User::table('user')->where('id','2')->value('name');
// 查询指定列的所有值查询⼀列值
User::table('user')->column('name');
// 在使⽤id为键 ( 索引号 )
User::table('user')->column('name','id');
// ⾼级⽤法分批查询减少内存消耗
User::name('user')->chunk(3,function($users){ // 每次查询三条然后遍历输出
foreach ($users as $user){
dump($user)
}
})
// ⾼级⽤法⼆:游标查询功能(⼀条⼀条显⽰出来减少内存消耗)
$cursor = User::name('user')->where('id','2')->cursor(); // 不带where就是查询所有
foreach($cursor as $user){
dump($user);
};
// 模糊查询
User::table('user')->where('name','like',['⼩%','嗯%'],'or')->select(); // 查name中⼩和嗯开头的
User::table('user')->whereLike('name',['⼩%','嗯%'],'or')->select(); // 和上⾯⼀句等价
User::table('user')->whereNotLike('name',['⼩%','嗯%'],'or')->select(); // 上⼀句的反向
// 查询id为多少到多少之间
User::table('user')->whereBetween('id','3,6')->select(); // 查询id 3到6 包括6
User::table('user')->whereNotBetween('id','3,6')->select(); // 上⼀句的反向
// 查询id为3,6,8
User::name('user')->whereIn('id','3,7,8')->select();
User::name('user')->whereNotIn('id','3,7,8')->select(); // 上⼀句反向
// exp ⾃定义拼接SQL语句
User::name('user')->where('id','exp','这⾥是要拼接的SQL语句')->select();
例:查询id为3,6,8
php修改数据库内容
例:查询id为3,6,8
User::name('user')->where('id','exp','IN (3,6,8)')->select();
// 聚合函数(聚合查询)
User::name('user')->count(); // 数据总数
User::name('user')->count('age'); // age 字段总数 NULL不算
// ⼦查询
// 先求出user表内所有gender = 男的id,然后在userTwo求出对应表⼀求出id的数据
$name1 = User::name('user')->field('id')->where('gender','男')->buildSql(true); // buildSql 把这句话转为SQL语句,不执⾏. $name2 = User::name('userTwo')->where('id','exp','IN '.$name1)->select();
// ⽅法⼆
User::name('userTwo')->where('id','exp','IN '.User::name('user')->field('id')->where('gender','男')->buil
dSql(true)>select();
// ⽅法三
User::name('userTwo')->where('id','IN' , function($query){
$query->name('user')->field('id')->where('gender','男'); // $query 是最前⾯那个数据库对象
})->select();
// 事务处理数据库引擎需是innoDB
// ⽐如转账⼀个减少⼀个加如果减了,加的SQL出错就会⾃动把减少的加回去
// ⾃动模式
User::Transaction(){
User::name('user')->where('id','2')->save(['age'] => User::raw('age' - 3)]); // id为2的age减3
User::name('user')->where('id','3')->save(['age'] => User::raw('age' + 3)]); // id为3的age加3
}; // 如果只减少了没有加就会把减的返反回去
// ⼿动模式
User::starTrans(); // 开启事务
try {
User::name('user')->where('id','2')->save(['age'] => User::raw('age' - 3)]); // id为2的age减3
User::name('user')->where('id','3')->save(['age'] => User::raw('age' + 3)]); // id为3的age加3
User::commit(); // 提交事务
} catch (\Exception $e){
echo '执⾏SQL失败,开始回滚数据';
User::rollback();
}
/
/ 选择器
->withAttr('name',function($value,$data){ // $value = 字段内的值 $data = 所有数据
return strtoupper($value); // 把name字段转为⼤写
})
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论