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小时内删除。