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字段 转为大写
})