thinkphp5 怎么进行跨库关联查询

thinkphp5 怎么进行跨库关联查询,第1张

如果是mysql里面两个不同的数据库,应该是可以直接使用 [数据库名称][表名]来关联的。TP指定的数据库,是因为他要缓存这个数据库的表字段等。试试看行不行,测试通过: SELECT a,b FROM table1 a LEFT JOIN db2table2 b ON aid=bid

程序

第一个web项目-微信小程序后端开发

第一个web项目-微信小程序后端开发

前言

需求分析

团队分工

总体设计

开发工具及编码实现

小程序前端

后端

数据库

接口代码

管理系统前端10

管理系统前端20

测试

后端本地测试

前后端联合测试

部署

总结

第一个web项目-微信小程序后端开发

前言

去年暑假一个偶然的机会我和几位同学加入了学院一位老师主持的教改项目,需求是开发一个基于SPOC与翻转课堂的计算机组成原理课程的学习app(类似慕课、知到),后来经过讨论决定降低难度,先做一个微信小程序,附带一个后台管理系统,于是我的第一个web项目就开始了~

需求分析

这里简单介绍下SPOC和翻转课堂的意思

翻转课堂

“翻转课堂”(Flipping Classroom)是一种颠覆传统教学由“课堂授课听讲 + 课后作业练习”转变为“课前自主学习 + 课堂协作探究”的新型教学模式。

SPOC

SPOC(Small Private Online Course)一般被译为小规模限制性在线课程或者小规模私有型网络课程,音译为“私播课”。

这次项目的需求是开发一个学习类型的小程序,用户分为学生和教师,其中学生可以观看视频、课件、动画,完成作业、考试以及发布评论、点赞、回复,而教师可以上传教学视频、课件、动画和发布作业、考试、通知,以及查看学生的学习情况,也可以查看评论回复,及时解答学生的疑惑。

团队分工

团队一共有四个人,总体工作分为产品设计、前端开发、后端开发三部分,然后每部分由两人负责。其中我是负责后端开发的,同时兼任项目负责人(其实也没有听上去那么高大上,只是需要承担更多决策、协调、沟通的角色)。

总体设计

这里分为小程序和管理系统

首先是小程序,放几张使用墨刀制作的原型图,这里多说两句,市面上的小程序基本都是微信授权直接登录,最多绑定手机号,我们这个由于要统计学生的学习情况才设置了注册和登录功能

至于管理系统,由于是10月份才开始做的,而且是我和另一位做后端的同学负责的,时间比较紧,我们作为前端小白没有十分系统的方法去做开发,只是大概确定了需要做哪些模块,每个模块对哪些表的增删改查,这里原型图就不放了(较简陋)

开发工具及编码实现

小程序前端

据我了解,做前端的同学先去微信公众平台注册账号,然后做一些开发设置,具体步骤自行百度。前端用的是微信开发者工具,有不会的基本上在微信开放文档都可以找到,包括许多实用的API。

后端

这里分为数据库、接口代码两部分

数据库

用的是mysql数据库,之前是跟着学堂在线的一个小程序入门教程做的,它推荐的本地开发环境是phpstudy,里面集成了php、mysql、apache、FTP、Nginx以及数据库管理工具phpMyAdmin,关于phpMyAdmin使用请看>

public function fun1($uid)

{

$list = db('table')->where(['rank_id'=>$uid])->select();

if(empty($list))return [];

else{

$arr = [];

foreach ($list as $item)

{

$arr = array_merge($arr,$this->fun1($item['id']));

}

return $arr;

}

}

public function fun2($uid,$arr=[])

{

$list = db('table')->where(['rank_id'=>$uid])->select();

if(empty($list))return $arr;

else{

$arr = array_merge($arr,$list);

foreach ($list as $item)

{

$arr = $this->fun2($item['id'],$arr);

}

return $arr;

}

}

两个方法,你测试下可用不。

现在有两张表:

商品表中有一个 img_id 字段作为的外键。

一个商品有一张,一张对应一个商品。所以商品表和表是一对一的关系。

所以,商品表是主表,表是从表。

那么在 TP5 中要定义模型的一对一关系的话,应该使用如下两种方法

那么这两种方法要怎么使用呢?文档是这么写的

所以,只需要知道外键在哪一张表即可知道用哪一个方法。

这个例子中,Product 中有 Image 的外键 img_id ,所以在 Product 模型中这么定义

如果这个例子改成

现在是表有商品的外键,那么关联关系这么定义

虽然是一对一关系,但是两者是由主从关系的。谁持有外键,谁就是从,另外一个就是主。

belongsTo 和 hasOne 从字面上来看是

所以,商品有的外键 img_id ,那么商品就是从表,就是主表。因此可以得到

反正就是, 谁有外键,谁就是从表

SELECT

  t1id,

  t1title,

  t2type,

  t2title,

  t2content

FROM table1 t1

  LEFT JOIN (SELECT

               with_id,

               type,

               group_concat(title)   as title,

               group_concat(content) as content

             from table2

             group by with_id, type) t2

    ON t1id = t2with_id

有几问题没看明白:

第一张表里的 "advantage“, "features", ”process" 这三个字段有什么用?

为什么要一次把所有数数查出来呢?不能在需要的时候再查第二张表吗?

以上就是关于thinkphp5 怎么进行跨库关联查询全部的内容,包括:thinkphp5 怎么进行跨库关联查询、一个小程序的后台是web端、thinkphp5如何将表单提交的数据作为条件进行递归查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10206616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存