清晨的上班路上,看到一辆公交车撞倒了一辆电动车,一位小学生倒在路上,腿部在流血,大人在嘶吼,生活都不容易,孩子都是家里的宝,一切平安顺心才是最重要的。

文章目录

  • 接口
  • 项目部署
  • 模型
  • 路由
  • 总结

接口

我们提供一个 URL 地址,让前端提交并获取后端参数,利用 Thinkphp 很好实现,而且实现的过程非常迅速,搭建该项目的方式也是相当的简单粗暴,没有什么难度,这个时候就体会到了 PHP 项目的魅力,就是开发非常的迅速。

项目部署


首先我使用的集成环境,方便在 windows 下部署 apache 服务器,然后下载好了 thinkphp 框架和 core 核心,将 XAMPP 启动后,在 htdocs 目录下新建一个文件夹,我们起名: upmovie ,正常情况下是这样,但是这次项目,我还使用 git 来管理,所以我自己的使用过程是,先在 sourceTree (git的图形管理工具)新建了个仓库,在 htdocs 目录下起名叫 upmovie

删除原项目里的 index 文件夹,新建 api 文件夹在里面创建 controller、model、service、validate 四个文件夹。

模型

这里不得不提一个模型,功能非常强大,大概就是你给你的 class 文件起个名字与文件名保持一致,当然支持下划线与驼峰命名转换,然后继承 thinkphp 的基础类 model 就可以直接操作数据库,而不必写 SQL ,完全把 SQL 当成一个数组或者是一个类来操作,极其方便迅速。
为了扩展性,给 modely 创建一个基类 BaseModel 继承 think\model ,然后我自己创建的模型都继承这个基类。例如我的数据库名称为 upm_movie 那么我的第一个模型的类名叫 UpmMovie 。

<?phpnamespace app\api\model;class UpmMovie extends BaseModel
{protected $hidden=['TYPE_LINK','LANG','UPDATE_TIME','CREATE_TIME'];public static function getMovieByID($id){$movie=self::with(['lang','type','type.typeLink'])->find($id);return $movie;}public static function getMovieByRange(){$movies=self::limit(0,4)->select();return $movies;}public function lang(){return $this->belongsTo('upm_lang','LANG','ID');}public function type(){return $this->hasMany('upm_type_link','MOVIE_ID','ID');}
}

hasOne:有一个,加上主谓语应该是 ,A 有一个 B
hasMany:有很多,A 有很多 B
belongsTo:属于, A 属于 B

下面这个是关联表,MOVIE_ID 是电影表主键,TYPE_ID 是类型表主键



所以 upm_movie 表与 upm_lang 表是多对一的关系,我使用 belongsTo ,意思是一条语言类型只“属于”一个电影。
同理,在 upm_type_link 表里,一个电影可以有多个类型,所以是 hasMany,意思 是多个类型“对应”一个电影。
于是第一个接口就这样完成了,一个模型加一个控制类即可:

class Movie
{public function getMovie($id){$movie=UpmMovie::getMovieByID($id);return $movie;}public function getMoviesByRange(){$movies=UpmMovie::getMovieByRange();return $movies;}}

路由

tp5里有一个路由的概念,即实际访问控制的 URL 用另外一个地址来代替,即为路由。这里采用的方式是注册的方式,比较清晰。
数组的方式都比较混乱

注册的方式比较清晰

总结

这样我们就完成了一个接口,虽然比较简单,但是也算是可以看到结果了,后续可以继续完成验证器,完善返回值等等。

用 PHP 开发的特点就是快,组件项目,完成接口都非常的迅速,很省时,不愧是服务器端强大的解析语言,咋加上框架的利用,开发效率和整洁程度十分的高效。

实战:Thinkphp+MySQL电影点播系统01-hasMany与belongsTo的应用相关推荐

  1. 实战:Thinkphp+MySQL电影点播系统02-验证器与自定义异常

    前言 每天上班下班,让生活更充实,让自己的工作更具挑战,生活每天都要充满激情,因为我们的好奇心,因为我们的求知欲,我们的生活和工作变得那么的多彩. 验证器 这里有一个验证器的概念,就是对传参进行校验, ...

  2. SSM电影点播系统01--可行性分析和需求分析

    前言 根据软件生命周期,我将我接下来的项目,进行规划,首先进行可行性分析,描述该项目的可行性是怎样的.对该软件的经济条件.社会条件,还有我自身的技术能力进行分析. 然后同时进行需求分析,将所需要的模块 ...

  3. Java Swing+Mysql电影购票系统(普通用户/管理员登录+充值购票+影院管理)

    Java Swing+Mysql电影购票系统 文章目录 数据库连接 主要页面 运行截图 文章目录 电影购票系统模拟真实购票流程,在线选座,充值购票,影院信息管理.登录用户分为:普通用户+管理员 数据库 ...

  4. springboot+mysql电影网站系统-计算机毕业设计源码04876

    摘  要 本次系统设计中,以用户的实际操作感作为整体开发的出发点,结合Java开发语言对软件开发原理,以实际运用作为出发点,以提高心仪电影获取效率为目的,使用SpingBoot框架技术整体开发源程序, ...

  5. 计算机毕业设计 SSM协同过滤算法电影推荐系统 电影在线推荐系统 在线电影点播系统Java Vue MySQL数据库 远程调试 代码讲解

  6. SSM电影点播系统03-UI界面设计

    界面设计 本系统设计思想大概是以大屏显示为主,左侧有一个浏览框,右侧显示点击选中的电影,再加上一个搜索框,整体风格我是设计成了蓝色色调,白色字,用 SUI mobile 前端框架设计了部分 DIV 的 ...

  7. SSM电影点播系统02-数据字典

    设计数据库 这个时候,我们开始设计数据库,主要是根据需求,来设计数据库需要保存哪些字段,哪些字段需要单独存在一张表里,哪些是可以一关联的形式存放.并且以一种清晰的表格形式来保存成文档,记录过程.可以设 ...

  8. Eclipse+Java+Swing+Mysql实现电影购票系统【建议收藏】

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库 5.工程截图 二.系统展示 1.注册系统 2.登录系统 3.用户-欢迎界面 4.用户-影片排行榜 5.用户-购票信息 6.用户 ...

  9. JAVA计算机毕业设计电影视频在线点播系统Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计电影视频在线点播系统Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计电影视频在线点播系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. curl 命令行下载工具使用方法小结
  2. 5G 在轨道运输网络中的需求
  3. wxWidgets:wxRegKey类用法
  4. JAVA中几个修饰符的作用以及一些相关话题
  5. IQueryable接口与IEnumberable接口的区别
  6. 《Scikit-Learn与TensorFlow机器学习实用指南》 第1章 机器学习概览
  7. 移动客户端UI设计指南
  8. 常用容器管理器易受危险 exploit 攻击
  9. Linux资源控制-CPU和内存【转】
  10. xv6 - simple modern os for education purpose.
  11. double operator[](int i)_请谨慎使用float和double
  12. 从0到60%:中国在环球指数当中的崛起
  13. idea java常用手册
  14. Stata软件做门槛回归模型(汉森个人主页上的代码)
  15. 佛山科目三仙塘中腾考场-考试要点(已经有新考场,这是旧考场经验)
  16. win7计算机打开显卡设置在哪里,win7在哪里打开显卡设置
  17. matlab 图片字符切割,基于MATLAB的图片中字符的分割与识别
  18. 新番 | 万万没想到,Hulu有一天也开始推新番了
  19. 【转载】第三方支付业务如何测试
  20. 【智能零售】2018年新零售商业的四大趋势

热门文章

  1. 中国货币超发严重 去年新增货币占全球近一半
  2. 吉林大学 超星慕课 高级语言程序设计 实验05 指针及其在程序设计中的应用(2022级)
  3. 计算机课件教程星空,合理运用多媒体课件进行教学
  4. ModelSim 使用【一】介绍
  5. 小米手机抓取蓝牙日志
  6. 两个月备战PMP经验总结(转)
  7. 公共服务平台 修改HTML模块,公共服务平台
  8. @EnableCircuitBreaker过时
  9. 你不知道的Scanner类,细思极恐
  10. 微信公众号获取地理位置存在偏移解决方案