宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > THINKPHP 5 的基本模型关联

THINKPHP 5 的基本模型关联

2021-04-20

1.创建thinkPHP模型

用cmd指令在文件根目录下创建模型
php think make:model 模块/模型名称

模型会创建在application目录下的 “模块\模型[模型名称]” 中。

2.模型命名

模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,比如表的表前缀是 db_ 在模型名称里就需要省略掉。所以 db_admin 表的模型类名就是 Admin , db_admin_message 的模型类名就是AdminMessage

3.一对一关联

hasOne (‘关联模型名’,‘关联外键’,‘主键’,‘别名定义’, ‘join类型’)

  • 关联操作都是基于(第一)模型的话,(第二)模型中并不需要定义关联方法,使用belongsTo 方法就可以。
    belongsTo 方法和 hasOne 一样,也有5个参数:

belongsTo(‘关联模型名’,‘关联外键’,‘关联模型主键’,‘别名定义’,‘join类型’)

a.模型定义








    //  定义关联方法,在User模型哄下定义    public function profile(){        //HASONE关联        return $this->hasOne('Profile','id', 'id');    }


在User模型定义好关联的方法之后在Profile模型里可以不用写任何对应的方法,但是必须最少要有一个对应db_Profile 表的空模型。

b.倘若关联操作都基于profile方法时,在Profile模型下定义







    public function user(){                            //档案BELONGSTO关联操作都基于profile方法时,直接使用            return $this->belongsTo('User');                }


c.控制器调用













     public function index($name='name'){        //get 1 是获取id为 1 的数据        //find() 是查找        //toArray()  是获取到的数据转为数组        $admin= Admin::get(1);        //查巡当前Admin模型数据        var_dump($admin->find()->toArray());        //查巡关联模型AdminMessage模型数据        $admin= $admin->AdminMessage->find()->toArray();     }


d.输出结果:

THINKPHP 5 的基本模型关联(图1)

4.一对多关联

hasMany(‘关联模型名’,‘关联外键’,‘关联模型主键’,‘别名定义’)

a.模型调用






    public function books(){        return $this->hasMany('Book','id','id');    }


b.控制器调用

  • 关联添加:也可以批量增加数据

  • 关联查询:可以直接调用模型的属性获取全部关联数据












    public function read(){       $user = UserModel::get(1);       // 获取状态为1的关联数据       $books = $user->books()->where('status',1)->select();       dump($books);       // 获取作者写的某本书       $book = $user->books()->getByTitle('ThinkPHP5快速入门');       dump($book);    }


  • 关联更新:









    public function update($id){    $user = UserModel::get($id);    $book = $user->books()->getByTitle('ThinkPHP5开发手册');    $book->title = 'ThinkPHP5快速入门';    $book->save();    }


  • 关联删除:










    //删除部分关联数据:    $book = $user->books()->getByTitle('ThinkPHP5开发手册');    $book->delete();    //删除所有的关联数据:    if($user->delete()){    // 删除所有的关联数据    $user->books()->delete();    }


5.多对多关联

一个用户会有多个角色,同时一个角色也会包含多个用户,这就是一个典型的多对多关联
多对多关联通常一定会有一个中间表,也称为枢纽表,所以需要创建一个用户角色的中间表
belongsToMany 的参数如下

belongsToMany(‘关联模型名’,‘中间表名称’,‘关联外键’,‘关联模型主键’,‘别名定义’)


对于枢纽表并不需要创建模型类,在多对多关联关系中,并不需要直接操作枢纽表。

a.模型定义








    // 定义多对多关联    public function roles(){    // 用户 BELONGS_TO_MANY 角色    return $this->belongsToMany('Role', 'think_access');    }


  • 关联新增

    新增用户角色 并自动写入枢纽表
    $user->roles()->save(['name' => 'editor', 'title' => '编辑']);

  • 批量新增






    $user->roles()->saveAll([    ['name' => 'leader', 'title' => '领导'],    ['name' => 'admin', 'title' => '管理员'],    ]);


由于该角色已经存在了,所以只需要使用attach 方法增加枢纽表的关联数据:

$user->roles()->attach($role);

  • 关联删除

    使用detach 方法删除关联的枢纽表数据,但不会删除关联模型数据

    $user->roles()->detach($role);

    删除枢纽表的同时删除关联模型

    $user->roles()->detach($role,true);

6.模型输出

  • 输出数组: toArray 方法把模型对象输出为数组。

    $user->toArray()

  • 隐藏属性:hidden方法在输出的时候隐藏某些属性

    模型名->方法([字段名称,字段名称,***]) $user->hidden(['create_time','update_time'])->toArray()

  • 指定属性:visible方法指定一些属性输出

    模型名->方法([字段名称,字段名称,***])

    $user->visible(['id','nickname','email'])->toArray()

  • 追加属性

    如果读取器定义了一些非数据库字段的读取,例如:











    class User extends Model{        // status修改器        protected function getUserStatusAttr($value){        $status = [-1 => '删除', 0 => '禁用', 1 => '正常', 2 => '待审核'];        return $status[$value];        }    }


        如果需要输出(字段名称) 属性数据的话,可以使用append 方法

        $user->append(['user_status'])->toArray()


  • 输出json:对于API 开发而言,经常需要返回JSON 格式的数据

    $user->toJson()

    如果需要输出(字段名称) 属性数据的话,可以使用append 方法

    $user->append(['user_status'])->toArray()

  • 输出json:对于API 开发而言,经常需要返回JSON 格式的数据

    $user->toJson()


Tag:
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • PHP模板系统不像其它的视图中使用任何第三方的性能
  • 本月和人工智能语言正在蓬勃发展每一种编程语言的兴起从来都离不开
  • 开源php即时通讯系统云原生批流融合数据平台宣布获得2300万美元A轮融资深喉咙php免费开源企业建站系统
  • php网站密码破解安全吗?基础知识以及确保您的网站保持安全的方法!php网站后台破解
  • 2019程序员的代码报告,比较扎心!
  • php登录界面代码上节课来到前端网站增加新闻信息一览显示页面和详细页面php登录 表单 代码
  • pl/sql 编程语言
  • php mvc框架实战教程了解基本MVC的运行机制和为什么这么做对照设定学习成长目标php mvc框架
  • dede.3.21.2+版本比较适宜主要运行DEDE系统
  • 微客商城免费版商城主题简介主题的免费版本导入数据

相关

如何修复被黑客篡改的网站代码与数据库?入侵迹象与范围评估指南

如何修复被黑客篡改的网站代码与数据库?入侵迹象与范围评估指南

PHP格式化:提升代码质量与协作效率的关键规则

如何查看虚拟主机上的 PHP 版本?这篇文章告诉你

免费开源的轻量级 PHP 开发框架 ThinkPHP,遵循

从零开始开发完整网站:前端、后端与 Web 服务器的关键技术

php框架 Java 与 PHP 之争:为何懂技术的大佬选

asp语言与php语言的区别 前端和后端的区别,你真的了解吗

免费且可商用的 PHP CMS 系统推荐:PbootCMS

轻量级可扩展的电商系统:优点与缺点分析

开源电商系统:PHP 与 Java 阵营的比较与选择

标签

seo(1182) 市场营销(661) 网站制作(573) 网站建设(564) 搜索引擎(553) 网站(482) PHP(361) 编程语言(345) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(148) 搜索引擎优化(146) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(107) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(92) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站分析(66) 网站建设方案(65) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) 网页设计(51) 百度(51) php框架(50) 网站建设知识(50) 大数据(50) 谷歌(49)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

百度 下载 2025 2024 2026 货源 货货源 虚拟 禅道 报名 金蝶KIS旗舰版
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们