yii2.0数据库交互ORM
来源:互联网 发布:什么是淘宝登录密码 编辑:程序博客网 时间:2024/06/06 07:53
ORM Object Relational Mapping 对象关系映射
ObjectPHP对象,属性
Relational数据库表,字段
Mapping对象和表的关系;属性与字段的关系
自制ORM框架
在models文件夹下创建AOrm基类 AOrm.php
<?phpnamespace app\models;abstract class AOrm{ public $tablename; public $primaryKey='id'; public $id; public abstract function Mapping(); /* * 将对象持久化到数据库 * 如果id属性没有被赋值,那么执行插入操作,否则执行更新操作 */ public function save(){ $sql=$this->buildSaveSql(); \yii::$app->db->createCommand($sql)->execute(); } private function buildSaveSql(){ $sql=''; $mapping=$this->Mapping(); $fields=[]; $values=[]; if(empty($this->id)){ /* * 没有id执行插入操作 * INSERT INTO table_name() values() */ foreach($mapping as $k=>$v){ if(isset($this->$k)){ /* * mapping中的$k有uName, pwd, nName, restMoney, * mapping中的$v有username, password, nickname, rest * 所以$this->$k指向的是 * public $uName * public $pwd * public $nName * public $restMoney * isset($this->$k)表示这些变量是否有值; * $this->$k需要在控制器中赋值,如: AomController下 * $object=new BUser() * $object->nName='AORM'; */ array_push($fields,$v); array_push($values,"'{$this->$k}'"); } } return $sql='INSERT INTO '.$this->tablename.'('.implode(',',$fields).') VALUES('.implode(',',$values).')'; }else{ $set=[]; //更新操作 UPDATE table_name SET field=value , field=value where id= foreach($mapping as $k=>$v){ if(isset($this->$k)){ array_push($set, "{$v}='{$this->$k}'"); } } return $sql='UPDATE '.$this->tablename.' SET '.implode(',',$set).' WHERE '.$this->primaryKey.'='.$this->id; } } public function del(){ if(!empty($this->id)){ \yii::$app->db->createCommand('DELETE FROM '.$this->tablename.' where '.$this->primaryKey.'='.$this->id)->execute(); }else{ return false; } }}创建子类文件models/BUser.php
<?php namespace app\models;class BUser extends AOrm{ public $tablename='test'; public $id; public $uName; public $pwd; public $nName; public $restMoney; public function Mapping() { // TODO: Implement Mapping() method. return [ 'uName' =>'username', 'pwd' =>'password', 'nName' =>'nickname', 'restMoney' =>'rest' ]; }}在控制器中调用models/AOrm下的方法
<?php namespace app\controllers;use app\models\BUser;use yii\web\Controller;class AomController extends Controller{ public function actionTest(){ $object= new BUser() ; $object->uName='ORM'; $object->pwd='123456'; $object->nName='哈哈'; $object->id=4; $res=$object->del(); echo "<pre>"; print_r($res); }}
0 0
- yii2.0数据库交互ORM
- yii2.0数据库交互DAO
- Yii2 数据库Active Record(ORM)
- Yii2 数据库Active Record(ORM)
- Yii2 数据库Active Record(ORM)
- Yii2.0 数据库查询
- Yii2.0 数据库查询
- Yii2.0 数据库操作
- Yii2.0 数据库操作
- Yii2.0 数据库查询
- Yii2.0 数据库查询
- yii2.0 使用数据库
- Yii2.0 数据库查询
- yii2.0 + vue 前后端交互(跨域)
- Yii2.0 数据库基本操作
- Yii2.0-数据库事务应用
- Yii2.0对数据库 查询
- Yii2.0数据库操作(1)
- 第二天
- POJ2378->树形DP
- 更新Ubuntu Kylin源遇到问题
- 消息队列设计精要
- 0710学习记录
- yii2.0数据库交互ORM
- 客户端C和服务器S之间建立一个TCP连接,该连接总是以1KB的最大段长发送TCP段,客户端C有足够的数据要发送。当拥塞窗口为16KB的时候发生超时,如果接下来的4个RTT往返时间内的TCP段的传输是成
- 第一篇博客
- Java 数据类型的转换
- 初识Servlet过滤器
- arcgis api for js开发心得
- U-boot引导内核流程分析
- c语言笔记
- 1025 - A Spy in the Metro