学习ThinkPHP的第20天

之所以从20天才开始写随笔记是因为之前没搞自己的博客

从20天开始记录我在ThinkPHP中的点点滴滴

1、MySQL事务操作

 
/**事务操作*/
//startTrans启动事务、rollback回调、commit提交
//使用场景:交易系统
Db::startTrans();
$row = Db::name("users")->dec('count',50)->where('userID',28)->update();
if($row !== false){
    $row1 = Db::name("users")->inc('count',50)->where('userID',13)->update();
    if($row1!==false){
        $result = Db::name("users")->field('count')->where('userID',28)->find();
        if ($result['count']>=0){
            Db::commit();//提交事务,交易成功
            echo "交易成功!!!";
        }else{
            Db::rollback();
            echo "交易失败,您的余额已不足请及时充值!!!";
        }
    }else{
        Db::rollback();//回调,交易失败
        echo "交易失败!!!";
    }
}else{
    Db::rollback();//交易失败
    echo "交易失败!!!";
}
 

2、ThinkPHP查询事件

 //在执行数据库操作触发的事件,如在查询数据前插入一条数据
        //1、查询前回调:before_select 、before_find
        //2、插入成功后回调:after_insert
        //3、更新成功后回调:after_update
        //4、删除成功后回调:after_delete
// 注册一个事件,查询之前调用add方法
        Db::event('before_select',[$this,'add']);
        $data = Db::name("users")->select();
        dump($data);
// add方法
public function add(){
$date = [
'userName' => '小铭',
'password' => 'MingGyGy'
];
$siz = Db::name("users")->insert($date);
dump($siz);
/*$result = Db::name("users")->data($date)->where("userID","=",21)->update();
dump($result);*/
}

3、ThinkPHP关联数据库操作

  一对一关联(正向关联):

    1)关联查询

      老师表对应模型中的方法:

  //定义一个关联方法 使用对应的模型名称 对应的表名称
    public function grade(){
        /**
         * // hasOne()方法
         * 第一个参数是需要关联的模型名称
         * 第二个参数是关联外键名称  默认为:表名_id
         * 第三个参数是当前主键名称  默认自动获取,也可手动设置
         */
        return $this->hasOne('Grade');
    }

      控制器中的方法:

public function join(){   
$teache = Teacher::get(1); //得到教师表的对象
        $grade = $teache->grade;//grade为对应的模型方法  获得班级的对象
        echo $teache->name."老师所带的班级:".$grade->name.$grade->id."班";
}

    2)关联添加数据

public function join(){
//实例化教师表
        $teacher = new Teacher;
        //教师表数据
        $tDate = [
            "name" => "王富贵"
        ];

        //班级表数据
        $gDate = [
            "Grade" => [
                'id' => '1704',
                'name' => '电商'
            ]
        ];
        $teacher->together($gDate)->save($tDate);
}

    3)关联更新数据

public function join(){
$teacher = Teacher::get(4);
        $teacher->name = "二哈";
        //更新班级数据
        $teacher->grade->name = '软件1701';
        $teacher->together('grade')->save();
}

    4)关联删除数据

public function join(){
$teacher = Teacher::get(4);
        $teacher->delete(); //删除老师数据
        $teacher->grade->delete(); //删除班级数据
}

   反向关联

    班级表的模型中:

    

//反向关联
    public function teacher(){
        return self::belongsTo("Teacher");
    }

    反向关联查询班级所对应的老师名称:

    

  /**
    * 反向关联查询(其它的增、删、改操作与正向关联类似)
    */
publicfunction join(){
        $teacher = Grade::get(1)->teacher;
        echo $teacher->name;
}

猜你喜欢

转载自www.cnblogs.com/MingGyGy-Castle/p/11962083.html