search
HomeBackend DevelopmentPHP Tutorial用MVC架构时,怎么进行多表联合查询?求一比较优秀的解决办法

用MVC架构时,怎么进行多表联合查询?求一比较优秀的解决办法 


回复讨论(解决方案)

任何框架都不可能预测你的需求
你只能按框架的约束组织你的数据

多表查询和MVC框架没有任何关系。

我给你说一些常用的方法吧,

1. 简单的,select 嵌套 select : select A.c1,A.c2,(select B.c3 from B where A.c4=B.c5) from A where c6=xxx

2. 简单的,select多表: select A.c1,A.c2,B.c3,B.c4 from A,B where A.c5=B.c6

3. 灵活的 join, left join, right join, outer join

4. union, union all

5. 上面两种或多种混合使用

其实难的sql查询还有很多情况,MVC框架不能够帮你进行多表查询的优化,所以优化了一条查询语句,可能就会让你的系统效率更高。

仅代表个人愚见,笑纳。

多表查询和MVC框架没有任何关系。

我给你说一些常用的方法吧,

1. 简单的,select 嵌套 select : select A.c1,A.c2,(select B.c3 from B where A.c4=B.c5) from A where c6=xxx

2. 简单的,select多表: select A.c1,A.c2,B.c3,B.c4 fr……



我只是想知道,在用MVC开发时,是怎么转向到原生态的SQL,是直接在控制里写很多JOIN 这些吗?

任何框架都不可能预测你的需求
你只能按框架的约束组织你的数据



大侠,可不可以举一两个例子。

如果你用的框架有规范,则按照它的规范来写
如果没有,则原生的 SQL 应该可以。多表查询也是如此。

如果你用的框架有规范,则按照它的规范来写
如果没有,则原生的 SQL 应该可以。多表查询也是如此。



框架有提供一些规范,我是用TP的来做的。之前没有用框架时,就是写了很多的JOIN语句,发现维护起来不容易,如果要修改,要重新去理解去读懂,有可能还会改错了,或范一些比较低级的错误,比如写单引号忘了写之类的。

见手册  6.23  关联模型

我有一个疑问,类似 销售订单表和客户表、用户表,这种表的关系,用面向对象要怎么设计呢

手册上不是有例子吗?

如果你用的框架有规范,则按照它的规范来写
如果没有,则原生的 SQL 应该可以。多表查询也是如此。



+++ 是的......

引用 3 楼 wangzhlin 的回复:多表查询和MVC框架没有任何关系。

我给你说一些常用的方法吧,

1. 简单的,select 嵌套 select : select A.c1,A.c2,(select B.c3 from B where A.c4=B.c5) from A where c6=xxx

2. 简单的,select多表: select A……



根据框架封装的db类了,查看手册或代码,或者你自己用原生的sql连接去写,数据库部分不用框架。

希望对你有帮助。

楼主可以封装成为视图  直接实例化试图就可 如果网站不是很大的话

多表联合查询跟mvc有什么关系?你还是没真正理解mvc是什么。

把你的联合查询封装在model里,由controller去调来获取数据就可以了。



楼上说封装成db的视图,也是一种方法。我发现很少有人在mysql上使用视图。不知为什么。其实视图可以解决很多问题。比如表结构更新后,只需要重新创建视图名称不变就可以了。而不用再去修改代码。可能是现在的新技术太多了,大家都不屑于使用这些老技术了。

谢谢各位的意见。
其实我想针对这种表联合查询的情况,做一个比较好的处理方案,为以后维护方便。最好是能结合类。我之前的系统是用原生态的SQL,发现修改时,容易写错是一个原因,也不好理解这个业务流程。
如果能把表与表的关系,用类来表现,这个方法不知怎么样。

多表查询和Mvc有什么关系

我的系统是用MVC架构的,而一个系统功能里,都会有多表查询的情况。
那么我想知道的是,各位在使用MVC架构开发时,遇到这种多表查询的情况,是直接用原生态SELECT,还是用视图或者存储过程

一般都是 原生态SELECT ,你可以去看看 mvc框架或者cms 的源码就知道了。

一般都是 原生态SELECT ,你可以去看看 mvc框架或者cms 的源码就知道了。


如果用原生态SELECT连接查询出来的数据,用什么对象接收啊?
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
win11出现ntdll.dll错误怎么办win11出现ntdll.dll错误怎么办Jun 29, 2023 pm 01:02 PM

win11出现ntdll.dll错误怎么办?很多win11系统的用户在使用的过程中,都会遇到dll文件丢失导致的错误问题。不过如果是ntdll.dll文件丢失造成的错误问题就非常严重了,ntdll.dll文件是Windows系统操控非常重要的工作文件,如果丢失很容易造成系同的崩溃,面对这个情况,我们该怎么办呢?下面就由小编为大家带来win11系统ntdll.dll错误解决方法。win11系统ntdll.dll错误解决方法按Windows+R打开运行。键入cmd并按Enter打开命令提示符。2.在

Win11系统BSOD错误代码0xc0000001怎么办Win11系统BSOD错误代码0xc0000001怎么办Jul 02, 2023 am 08:13 AM

Win11系统BSOD错误代码0xc0000001怎么办?在我们日常电脑的使用中,难免会遇到大大小小的电脑问题,近期就有用户遇到了BSOD错误代码0xc0000001的情况,为此十分困恼,对此下面小编准备了解决方法,我们一起来看看吧。Win11系统BSOD错误代码0xc0000001解决步骤  在Recovery模式下进行启动修复  1、首先,为Windows11创建可启动媒体并使用该媒体启动PC。  2、在下一个屏幕上,单击修复您的计算机。  3、您现在将到达系统恢复选项屏幕。  4、在选择一

PHP Deprecated: Function split() is deprecated - 解决办法PHP Deprecated: Function split() is deprecated - 解决办法Aug 17, 2023 pm 05:36 PM

PHPDeprecated:Functionsplit()isdeprecated-解决办法在使用PHP进行开发时,我们可能会遇到以下警告信息:PHPDeprecated:Functionsplit()isdeprecated。这个警告的意思是split()函数已被弃用,在最新的PHP版本中不再推荐使用。本文将探讨这个问题并提供解决办

如何解决C++语法错误:'expected ')' before '&' token'?如何解决C++语法错误:'expected ')' before '&' token'?Aug 26, 2023 pm 08:13 PM

如何解决C++语法错误:'expected')'before'&'token'?在C++编程过程中,经常会遇到各种语法错误。其中一个常见的错误是:“expected')'before'&'token”。这种错误通常在函数或方法的参数列表中出现,表示在某个变量或类型前缺少了右括号导致编译器无法理解。下面将详细说明如何解决这个错误,并提供一些代码

win10无法找到脚本文件怎么办win10无法找到脚本文件怎么办Jun 29, 2023 pm 02:48 PM

win10无法找到脚本文件怎么办?有些win10用户在运行应用程序的时候,会与上电脑提示无法找到脚本文件的情况,这可能会导致部分应用功能无法正常使用,这时要怎么办呢?导致该问题产生的原因一般都是电脑中的文件缺失,只需要我们找到对应的本间并进行补充就可以解决,下面就随小编一起来看看win10脚本文件找不到解决方法吧。win10脚本文件找不到解决方法1、“win+R”快捷键打开运行,输入“msconfig”,回车打开。2、在打开的界面中,将“常规”选项下方的“诊断启动”勾选上,然后将电脑重启。3、如

Win10麦克风加强拉不动怎么办Win10麦克风加强拉不动怎么办Jul 05, 2023 pm 06:13 PM

  Win10麦克风加强拉不动怎么办?很多小伙伴在使用电脑的时候经常会用到麦克风,而且其中一部分用户在准备加强麦克风的时候却频繁出现了拉不动的情况,那么我们在遇到这种情况的时候应该怎么办呢?下面就跟着小编一起来看看Win10麦克风加强拉不动解决方法吧。  Win10麦克风加强拉不动解决方法  1、可以重新更新一下驱动试一下。  2、WIN7以上的系统,右下角的小喇叭右键录音设备在录制里把现有麦克风调成默认设备。然后双击麦克风或点属性在级别里可以调麦克风的音量大小和麦克风加强(这个适当调节,调大有

解决win7电脑屏幕不停闪烁的方法解决win7电脑屏幕不停闪烁的方法Dec 22, 2023 am 09:27 AM

win7系统是一款被电脑系统用户们都任何的优秀系统,在不断的使用过程中许多用户们遇到了win7电脑屏幕闪烁不停的故障!今天小编就为大家带来了电脑屏幕闪烁不停抖动的解决办法让我们一起来看看吧。win7电脑屏幕闪烁不停怎么回事:可能原因一:显示器的驱动没安装好1、右击‘计算机’,点击‘管理’。2、打开了计算机管理窗口,点击左边的‘设备管理器’。3、在右边找到显示适配器,展开后,右键点击下方的驱动,在弹出的菜单里点击‘更新驱动程序软件’,或卸载再装过。4、在打开的窗口选择自动搜索更新驱动,或者选择第二

Linux系统中常见的服务无法启动和崩溃问题及其解决办法Linux系统中常见的服务无法启动和崩溃问题及其解决办法Jun 29, 2023 pm 08:48 PM

Linux系统作为一种稳定可靠的操作系统,在公司和个人使用中得到了广泛的应用。然而,有时候我们可能会遇到服务无法启动或崩溃的问题,给工作和学习带来不便。本文将介绍Linux系统中常见的服务无法启动和崩溃问题,并提供一些解决办法。一、服务无法启动问题端口被占用在启动服务之前,首先要确保所需端口没有被占用。可以使用netstat命令检查正在使用的端口,并结束相关

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software