ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
``` Env::get('database.hostname') // 获取env文件内容 Env::has('database.hostname') // 判断database.hostn ame 是否存在 Config::get('database.connections.mysql.hostname') // 获取config文件里的database > conn...... * 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是 false否') 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 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','男')->buildSql(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字段 转为大写 }) ```