Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial php 用MVC架构时,怎么进行多表联合查询?求一比较优秀的解决办法

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

Jun 23, 2016 pm 01:50 PM
mvc cemerlang Seni bina Penyelesaian

用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连接查询出来的数据,用什么对象接收啊?
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika roda tetikus gagal dan melompat ke atas dan ke bawah secara rawak? Kongsi tiga penyelesaian Apakah yang perlu saya lakukan jika roda tetikus gagal dan melompat ke atas dan ke bawah secara rawak? Kongsi tiga penyelesaian Mar 13, 2024 pm 07:28 PM

Tetikus adalah salah satu peranti komputer yang paling penting Walau bagaimanapun, semasa penggunaan, roda tetikus pasti akan rosak atau melompat ke atas dan ke bawah, yang sangat menjejaskan operasi pengguna. Mari kita lihat tiga cara untuk menyelesaikan masalah lompatan roda tetikus secara rawak. Kaedah 1: Periksa tetikus yang dihasilkan oleh jenama yang berbeza mempunyai ciri tersendiri. Sesetengah roda tetikus mempunyai kepekaan yang tinggi atau redaman rendah, yang boleh menyebabkan roda melompat secara tidak menentu. Untuk menentukan sama ada masalahnya adalah dengan tetikus itu sendiri, anda boleh menyentuh sedikit roda tetikus dan melihat halaman bergerak pada skrin. Jika anda mendapati bahawa tetikus anda menatal terlalu sensitif, anda mungkin ingin mempertimbangkan untuk membeli tetikus baharu untuk menyelesaikan masalah. Kaedah 2: Semak tetapan tetikus Tetapan tetikus yang tidak betul boleh menyebabkan roda tetikus melompat secara rawak.

Kongsi kaedah untuk menyelesaikan kegagalan PyCharm untuk bermula Kongsi kaedah untuk menyelesaikan kegagalan PyCharm untuk bermula Feb 20, 2024 am 09:46 AM

PyCharm ialah persekitaran pembangunan bersepadu (IDE) Python yang berkuasa yang digunakan secara meluas dalam kerja harian pembangun Python. Walau bagaimanapun, kadangkala kami mungkin menghadapi masalah bahawa PyCharm tidak boleh dibuka seperti biasa, yang boleh menjejaskan kemajuan kerja kami. Artikel ini akan memperkenalkan beberapa masalah dan penyelesaian biasa apabila PyCharm tidak boleh dibuka, dan memberikan contoh kod khusus, dengan harapan dapat membantu anda menyelesaikan masalah ini dengan lancar. Masalah 1: PyCharm ranap atau menjadi tidak responsif Sebab yang mungkin: PyCh

Ralat 629 penyelesaian sambungan jalur lebar Ralat 629 penyelesaian sambungan jalur lebar Feb 20, 2024 am 08:06 AM

Penyelesaian kepada Ralat 629 Sambungan Jalur Lebar Dengan perkembangan pesat teknologi Internet, jalur lebar telah menjadi bahagian yang amat diperlukan dalam kehidupan seharian kita. Walau bagaimanapun, kadangkala kita mungkin menghadapi beberapa masalah semasa menggunakan jalur lebar, seperti Ralat 629 Ralat Sambungan Jalur Lebar. Ralat ini biasanya menyebabkan kita tidak dapat mengakses Internet secara normal dan membawa banyak kesulitan. Dalam artikel ini, kami akan berkongsi beberapa kaedah untuk menyelesaikan Ralat 629 Sambungan Jalur Lebar untuk membantu anda menyelesaikan masalah ini dengan cepat. Pertama, isu sambungan jalur lebar Ralat 629 biasanya disebabkan oleh konfigurasi rangkaian atau isu pemacu

Kongsi tiga penyelesaian mengapa pelayar Edge tidak menyokong pemalam ini Kongsi tiga penyelesaian mengapa pelayar Edge tidak menyokong pemalam ini Mar 13, 2024 pm 04:34 PM

Apabila pengguna menggunakan penyemak imbas Edge, mereka mungkin menambahkan beberapa pemalam untuk memenuhi lebih banyak keperluan mereka. Tetapi apabila menambah pemalam, ia menunjukkan bahawa pemalam ini tidak disokong. Bagaimana untuk menyelesaikan masalah ini? Hari ini, editor akan berkongsi dengan anda tiga penyelesaian. Kaedah 1: Cuba gunakan pelayar lain. Kaedah 2: Flash Player pada penyemak imbas mungkin sudah lapuk atau tiada, menyebabkan pemalam tidak disokong Anda boleh memuat turun versi terkini dari tapak web rasmi. Kaedah 3: Tekan kekunci "Ctrl+Shift+Delete" pada masa yang sama. Klik "Kosongkan Data" dan buka semula penyemak imbas.

Masalah biasa dan penyelesaian kepada ralat pemasangan pyqt5 Masalah biasa dan penyelesaian kepada ralat pemasangan pyqt5 Jan 19, 2024 am 10:00 AM

Dengan populariti Python, PyQt5 telah menjadi salah satu alat pilihan pertama untuk ramai orang untuk pembangunan GUI yang cepat Walau bagaimanapun, masalah pemasangan tidak dapat dielakkan. Berikut ialah beberapa masalah biasa dengan pemasangan PyQt5 dan penyelesaiannya. Mesej ralat semasa memasang PyQt5 ialah modul sip tidak dapat ditemui Masalah ini biasanya berlaku apabila menggunakan pip untuk memasang PyQt5. Sebab ralat ini adalah kekurangan kebergantungan pada modul sip, jadi anda perlu memasang modul sip secara manual terlebih dahulu. Masukkan kod berikut pada baris arahan: pipinsta

Penyelesaian kegagalan butang mesin basuh (ajar anda cara menangani masalah kegagalan butang mesin basuh) Penyelesaian kegagalan butang mesin basuh (ajar anda cara menangani masalah kegagalan butang mesin basuh) Jul 24, 2024 pm 03:58 PM

Mesin basuh memainkan peranan penting dalam kehidupan seharian kita Namun, kadangkala butang mesin basuh didapati tidak berfungsi. Keadaan ini mungkin mengganggu kita kerana ia menjejaskan operasi mencuci biasa kita. Walau bagaimanapun, jangan risau, artikel ini akan memperkenalkan anda kepada beberapa kaedah untuk menyelesaikan masalah butang tidak berfungsi pada mesin basuh anda. 1. Periksa sambungan kuasa - palam dipasang dengan betul: Pastikan palam kuasa mesin basuh dimasukkan dengan kukuh ke dalam soket. -Sama ada suis kuasa dihidupkan: Periksa sama ada suis kuasa dihidupkan. 2. Bersihkan permukaan butang - tutup: pertama matikan mesin basuh dan cabut palam kuasa untuk memastikan keselamatan. Kegagalan Butang Mesin Basuh Menyelesaikan Masalah Pembersihan Air Suam Gunakan air suam dan detergen neutral untuk mengelap permukaan butang dengan perlahan. Pelarasan butang dan mulakan semula kedudukan butang pelarasan: semak sama ada butang itu

1.3ms mengambil masa 1.3ms! Seni bina rangkaian neural mudah alih sumber terbuka terbaru Tsinghua RepViT 1.3ms mengambil masa 1.3ms! Seni bina rangkaian neural mudah alih sumber terbuka terbaru Tsinghua RepViT Mar 11, 2024 pm 12:07 PM

Alamat kertas: https://arxiv.org/abs/2307.09283 Alamat kod: https://github.com/THU-MIG/RepViTRepViT berprestasi baik dalam seni bina ViT mudah alih dan menunjukkan kelebihan yang ketara. Seterusnya, kami meneroka sumbangan kajian ini. Disebutkan dalam artikel bahawa ViT ringan biasanya berprestasi lebih baik daripada CNN ringan pada tugas visual, terutamanya disebabkan oleh modul perhatian diri berbilang kepala (MSHA) mereka yang membolehkan model mempelajari perwakilan global. Walau bagaimanapun, perbezaan seni bina antara ViT ringan dan CNN ringan belum dikaji sepenuhnya. Dalam kajian ini, penulis menyepadukan ViT ringan ke dalam yang berkesan

Apakah seni bina dan prinsip kerja Spring Data JPA? Apakah seni bina dan prinsip kerja Spring Data JPA? Apr 17, 2024 pm 02:48 PM

SpringDataJPA adalah berdasarkan seni bina JPA dan berinteraksi dengan pangkalan data melalui pemetaan, ORM dan pengurusan transaksi. Repositorinya menyediakan operasi CRUD, dan pertanyaan terbitan memudahkan akses pangkalan data. Selain itu, ia menggunakan pemuatan malas untuk hanya mendapatkan semula data apabila perlu, sekali gus meningkatkan prestasi.

See all articles