分享

(9)学习tp5之模型

 火炉与猫咪 2019-04-22
模型命名:使用去掉前缀的表名(大驼峰).php

注意:使用模型中记得修改配置文件

// 数据集返回类型
'resultset_type'  => 'collection', //手册-》数据库-》数据集

1、路由


2、控制器中的代码(当前是UserController控制器)

  1. //往模型中【插入】数据
  2. public function add(){
  3. //二维插入多条,一维插入1条
  4. $data = [
  5. ['name' => 'tp', 'password' => '123', 'fee' => 99],
  6. ['name' => 'tp1', 'password' => '123', 'fee' => 99]
  7. ];
  8. $obj = new User();
  9. $obj->userAdd($data); //调模型中的方法
  10. }
  11. //在模型中【查询】数据
  12. public function select(){
  13. $res = User::userSelect(); //调静态
  14. $obj = new User();
  15. $ratioRes = $obj->selectRatioResult();
  16. dump($res);
  17. }
  18. //关联模型
  19. public function relevanceModel(){
  20. //总结:1、查询和更新是以属性的形式调,不要加();2、get()里面传啥值,看sql追踪的,一般是外键
  21. //dump(User::get(2)->userInfo->toArray()); //关联【查询】
  22. //关联【新增】是给user_info(b)表新增。
  23. //User::get(9)->userInfo()->save(['email'=>'69391332@qq.com','mobile'=>'2222']);
  24. //关联【更新】更新第1条。先查出一条外键=3的。更新时拿外键对应的本表id做条件
  25. User::get(1)->userInfo->save(['email'=>'222@qq.com','mobile'=>'222','user_id'=>'1']); //只适用于1对1
  26. }

3、模型中的代码(当前是User模型)

public function userAdd($data){
    //插入单条,方式1,使用父类
    $this->data($data);
    $this->save();

    //插入单条,方式2,使用ormDb
    Db::name('user')->insert($data);

    //插入多条
    $this->saveAll($data);

}


//使用模型1,需要将数据库配置文件中的'resultset_type'  => 'collection',改成数据集这样方便操作
public static function userSelect(){
    //使用模型的 静态方法。本类调父类中的静态方法
    //$res = self::get('1');     //查单条
    $res = self::all([1,3,4]);   //查多条
    return $res->reverse()->toArray();  //reverse()倒序是手册-》数据库-》数据集中的方法
}

//使用模型2
public function selectRatioResult(){
    //使用ormDb
    $dbRes = Db::name('user')->where(['id'=>2])->find();
    dump($dbRes);   //Db返回的是数组

    //使用模型的
    $modelRes = $this->where(['id'=>1])->find();    //模型返回的是对象
    return $modelRes->toArray();    //只有数据集对象,才可以转成数组(前提是要改数据库配置文件)
}


//【关联模型】方法名的定义规则,一般是模型名
public function userInfo(){
    /*
     * user a表。
     * user_infob表,通过user_id字段和a表的id做外键关联。
     * 1个参数是b表模型名,第2个参数是b表的外键,第3个参数是a表的主键
     * */
    //return $this->hasOne('UserInfo','user_id','id');    //【一对一】
    return $this->hasMany('UserInfo','user_id','id')->field('email');    //【一对多】
}




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多