tp5 (8)学习tp5之ORM操作数据库

编辑:
发布时间: 2020-12-26 15:17:10
分享:
ORM是在M层中用的一种技术

orm即可以在C层直接使用,也可以在M层直接使用

orm:对象关系模型映射,它把数据库中的每一张表映射成对象了。然后要操作这个表的时候,就用对象调方法,用面向对象的形式就可以了。这样就不用写原生sql语句了

控制器文件命名,采用大驼峰。可加Controller,也可不加,建议不加

路由:

控制器代码:

//原生,使用了参数绑定 public function protogenesis { Db::execute values ",["name"=>"xg","password"=>"123456"]); $res = Db::query; dump; } //面向对象【添加】 public function objAdd{ $data = [ "name" => "yx", "password" => "123" ]; $id = Db::name->insert; //第3个参数,返回插入的id dump; } //面向对象【查询】 public function objSelect{ //技巧:field和where等方法都可以使用数组进行传参 //1、【选取】数组里面放id 会解析成子查询; SELECT * FROM `tp5_user` WHERE `id` IN ; $res = Db::name->select; //2、【或者条件】age等于30 || 等于80的; //SELECT * FROM `tp5_user` WHERE `age` = 30 AND `id` IN OR `age` = 100;注意:这样子查询会失效 $res = Db::name->where->whereOr->select; //3、【并且条件】SELECT * FROM `tp5_user` WHERE `id` = 4 AND `age` = 26 $where = ["id"=>4,"age"=>"26"]; $res = Db::name->where->select; //4、【打印curd的sql语句】加上fetchSql;SELECT * FROM `tp5_user` WHERE `id` = 1 LIMIT 1 $res = Db::table->fetchSql->find; //5、【字段取反】field加上第2个参数,是不查name字段; SELECT `id`,`password`,`age` FROM `tp5_user` $res = Db::table->field->select; //6、【使用内置函数】查指定字段的总和;SELECT sum FROM `tp5_user` $res = Db::table->field"])->select; //7、【使用关键字去重】SELECT DISTINCT `name` FROM `tp5_user` $res = Db::table->distinct->field->select; /* 8、连表查询 内连 == 匹配条件相等,2张表里都有的 左连 == 左表里有多少条就打印出来多少条,匹配不上的,右表字段显示null 右连 == 右表里有多少条就打印出来多少条,匹配不上的,左表字段显示null * */ $res = Db::name ->alias ->join ->field //join的时候不能用排除 ->select; //9、如果事物失效,查错思路,注释掉提交事物,如果还能执行sql语句,就不要想代码错误了,想其他的 如:表引擎 Db::startTrans; // 启动事务 try{ Db::table->where->update; $a = 1/0; //用错误字段 || 0不能做除数,来模拟失败 Db::commit; // 提交事务 } catch { dump); Db::rollback; // 回滚事务 } dump; }

相关阅读
热门精选
孩子 皮肤