-
laravel 联表查询
2020-06-01 21:06:21联表查询得有两张有联系的数据表,(除了自己连接自己的,自联查询) 案例:创建两个表,进行关联查询(使用laravel的数据迁移) 创建两个表,article表和author表。 (1)使用php artisan的命令创建迁移文件 在...联表查询得有两张有联系的数据表,(除了自己连接自己的,自联查询)
案例:创建两个表,进行关联查询(使用laravel的数据迁移)
创建两个表,article表和author表。
(1)使用php artisan的命令创建迁移文件
在laravel文件目录下打开命令行窗口,输入下面命令,回车。//创建article表迁移文件 #php artisan make:migration create_article_table //创建author表迁移文件 #php artisan make:migration create_author_table
(2)编写两个迁移文件的代码
在create_article_table的迁移文件中的up方法里写入下面创建表的字段public function up() { Schema::create('article', function (Blueprint $table) { //主键自增 $table->bigIncrements('id')->comment('主键'); //作者名字,vachar类型,字段长度50,唯一 $table->string('article_name',50)->unique()->comment('文件名称'); //作者的id $table->tinyInteger('author_id')->comment('作者id'); }); }
在create_author_table的迁移文件中的up方法里写入下面创建表的字段
public function up() { Schema::create('author', function (Blueprint $table) { //主键自增 $table->bigIncrements('id')->comment('主键'); //作者名字 $table->string('author_name')->comment('作者name'); }); }
上面两个迁移文件up方法中编写的id是相互关联的!
(3)执行生成数据表的迁移文件
命令行窗口输入:php artisan migrate
执行以后,数据表中就会有article和author表,并且有上一步在迁移文件里写的字段
(4)模拟数据的填充(通过填充器来实现)
创建填充器文件:
在项目的命令行窗口中编写创建填充器代码:php artisan make:seeder ArticleAndAuthorTableSeeder
创建完成以后,在databases/seeds/里有刚创建的文件(ArticleAndAuthorTableSeeder)。
打开编写,进行模拟数据的填充:public function run() { //article里进行数据填充 DB::table('article')->insert( [ [ 'article_name' =>'怎么保养皮肤', 'author_id' =>rand(1,5), ], [ 'article_name' =>'怎么减肥', 'author_id' =>rand(1,5), ], [ 'article_name' =>'自律给我自由', 'author_id' =>rand(1,5), ], [ 'article_name' =>'学霸养成记', 'author_id' =>rand(1,5), ], ] ); //author表里进行数据填充 DB::table('author')->insert( [ [ 'author_name' =>'张三', ], [ 'author_name' =>'李四', ], [ 'author_name' =>'王五', ], [ 'author_name' =>'刘六', ], ] ); }
填充完以后,执行填充器文件,命令行输入:
php artisan db:seed --class=ArticleAndAuthorTableSeeder
执行完以后,article表里和author表里就有填充的文件了
然后进行联表查询:
链表的方式: 内联和外联(左外联,右外联)
用链式操作进行链接:
(1)创建路由;//联表查询 Route::get('duobiaoselect','TestController@duobiaoselect');
(2)编写控制器代码;
//联表查询 public function duobiaoselect(){ /* 把sql语句改写成链式操作,实现效果 select t1.id,t1.article_name as article_name,t2.author_name as author_name from article as t1 left join author as t2 on t1.author_id = t2.id; 语法:DB门面 -> join联表方式名称小驼峰写法(关联的表名,表1的字段,运算符,表2的字段) */ $data=DB::table('article as t1') ->select('t1.id','t1.article_name','t2.author_name') ->leftjoin('author as t2','t1.author_id','=','t2.id') ->get(); dump($data); }
(3)直接访问,就可以查询到内容了
-
Laravel 多表查询时 表别名的用法总结
2020-07-10 09:07:08可如果有个多个表查询起来不久很麻烦了嘛,所以这个时候我们可以借助一下 Laravel 模型里的一个方法,别名(实际上 原生SQL 语句也可使用此方法,但此文章不讲述其原理) 假设的一种数据表关联 表名 关联字段 ...假设如今我们正在做一个系统,这个系统是属于订票那一类的航班或者车票系统。 然后搜索功能里有出发城市和目的城市等两个搜索条件。
如果我们的航线是直接对标城市的话,那么搜索其实挺简单的,只是个两个表关联查询。 可如果有个多个表查询起来不久很麻烦了嘛,所以这个时候我们可以借助一下 Laravel 模型里的一个方法,别名(实际上 原生SQL 语句也可使用此方法,但此文章不讲述其原理)假设的一种数据表关联
表名 关联字段 Trains(火车表) lines_id Lines(线路表) from_station_id , to_station_id Stations(站点表) city_id Cities(城市表) id 好,看完上面的表后我们可以大致理解 Trains -> Lines -> Stations -> Cities 这几个表的关系
(一辆火车所行使的一条路上,他的起点站和终点站都是属于某个城市里的某一个站点)。关联 Trains 与 Lines
那么我们去建立一个模型 – Trains,并且与 Lines 表关联查询,查询完后我们的火车便与他所行驶的路线数据关联起来了
Trains::join("lines","lines.id","=","trains.lines_id") ->get();
然后我们从上面的表里可以得知,Lines 表有两个字段是关联到 Stations 表的,假设如果是直接关联到 Cities 表,那么客户传过来的 出发城市id 和到达城市id 我们直接对应就好了。可问题是 Lines 表 直接关联的Stations 表,而只有 Stations 表是关联到城市表的。
(那么你能直接这样吗? = . =)
Trains::join("lines","lines.id","=","trains.lines_id") ->join("stations","stations.id","=","lines.from_station_id") ->join("stations","stations.id","=","lines.to_station_id") ->get();
那肯定是不行的对吧?
因为我们没办法正确区分哪个是出发站点的信息,哪个是到达站点的信息,这个时候,别名就派上用场了
Trains::join("lines","lines.id","=","trains.lines_id") ->join("stations as stations_from","stations_from.id","=","lines.from_station_id") ->join("stations as stasions_to","stasions_to.id","=","lines.to_station_id") ->get();
这个样子我们就能正确判断哪个是出发站点的信息,哪个是到达站点的信息了,然后只需要稍微限制一下。就能得到我们限定的出发城市到目的城市里的线路了
那么最终代码如下
Trains::join("lines","lines.id","=","trains.lines_id") ->join("stations as stations_from","stations_from.id","=","lines.from_station_id") ->join("stations as stasions_to","stasions_to.id","=","lines.to_station_id") ->select([ "trains.*", "lines.*", ]) ->where([ ["stations_from.city_id",$from], ["stasions_to.city_id",$to], ]) ->get(); /* select 表示你在前端要输出的数据有哪些 */
-
laravel的联表查询
2020-06-02 18:22:01联表查询的要求 联表要求至少得有2张表(除了自己连接自己,自联查询),并且还是存在关系的两张表。 联表查询有哪几种方式? 联表查询一共有:内连接(inner)、左连接(left)、右连接(right)。 联表查询得步骤 ...联表查询的要求
联表要求至少得有2张表(除了自己连接自己,自联查询),并且还是存在关系的两张表。
联表查询有哪几种方式?
联表查询一共有:内连接(inner)、左连接(left)、右连接(right)。
联表查询得步骤
①创建迁移文件
②相继编写2个迁移文件的代码
③执行生成数据表的迁移文件
④创建填充器文件(可以将多个数据表的写入操作写在一起)
⑤编写填充器文件
⑥需要执行填充器文件
⑦在控制器中使用
DB门面 -> join联表方式名称小驼峰写法(关联的表名,表1的字段,运算符,表2的字段) -
laravel——联表查询
2020-06-02 20:24:07联表查询 联表要求至少有2张表(除了自己连接自己),并且还得存在关系的两张表 例如:可以建立2张表,文章表、作者表 文章表(article) id 主键 article_name 文章名称 author_id 作者(作者id) 作者表(author)...联表查询
联表要求至少有2张表(除了自己连接自己),并且还得存在关系的两张表
例如:可以建立2张表,文章表、作者表
文章表(article)
id 主键 article_name 文章名称 author_id 作者(作者id)
作者表(author)
id 主键 author_name 作者名称
案例:要求查询数据表(文章表、作者表),查询出文章的信息包含了作者名称
1、创建迁移文件
#php artisan make:migration create_article_table #php artisan make:migration create_author_table
2、相继编写迁移文件代码
- 文章表的迁移
public function up() { Schema::create('article', function (Blueprint $table) { $table->increments('id'); $table->string('article_name',100); $table->tinyInteger('author_id')->notNull(); }); } public function down() { Schema::dropIfExists('article'); }
- 作者表的迁移
public function up() { Schema::create('author', function (Blueprint $table) { $table->increments('id'); $table->string('author_name',20)->notNull(); }); } public function down() { Schema::dropIfExists('author'); }
3、执行迁移文件
#php artisan migrate
4、模拟填充数据(通过填充器实现)
- 创建填充器文件(可以将多个数据表写入操作写在一起)
#php artisan make:seeder ArticleAndAuthourTableSeeder
- 编写数据模拟的代码
public function run() { // DB::table('article')->insert([ [ 'article_name' =>'我有很多小胡你要吗', 'author_id' =>rand(1,3) ], [ 'article_name' =>'丢掉也不给你', 'author_id' =>rand(1,3) ], [ 'article_name' =>'想多了', 'author_id' =>rand(1,3) ], ]); DB::table('author')->insert([ [ 'author_name'=>'人民网', ], [ 'author_name'=>'和讯网', ], [ 'author_name'=>'网易', ], ]); }
- 执行填充器文件
#php artisan db:seed --class=ArticleAndAuthourTableSeeder
例如:查询id为1的文章,其结果为1,我有很多小花你要吗 人民网
分析:
数据来源:文章表、作者表
表1:文章表 t1(跟在from关键词后面的表)
表2:作者表 t2(跟在join关键词后面的表)
关联条件:t1.author_id=t2.id
联表方式:左外连接
原始的sql语句
select t1.id,t1.article_name,t2.author_name from article as t1 join author as t2 on t1.author_id=t2.id;
将上述语法改成链式操作
语法:
DB门面/模型->join联表方式名称(关联的表名,表1的字段,运算符,表2的字段)
a.创建需要的路由
//联表查询 Route::get('home/test/test31','TestController@test31');
b.创建响应的方法:实现将SQL语句该写成链式操作实现刚才的案例
public function test31(){ //select t1.id,t1.article_name,t2.author_name from article //as t1 join author as t2 on t1.author_id=t2.id; //查询 $data=DB::table('article as t1')->select('t1.id','t1.article_name','t2.author_name')->leftjoin('author as t2','t1.author_id','=','t2.id')->get(); dd($data); }
-
laravel框架联表查询
2020-06-02 08:31:00前面我们进行过数据的迁移与填充,而如果我们想实现在两个表数据进行关联的查询这时候我们就需要用到联表查询; 联表查询的方式有多种: 分为三种连接查询: 1.内连接 使用比较运算符(包括=、>、<、<>... -
在laravel利用联合查询时两个数据表按照某一字段排序
2019-03-15 09:47:55在laravel利用联合查询时两个数据表按照某一字段排序 在项目中需要把两个表的数据按照时间进行排序,需要利用mysql的两个查询 代码: $tourist = Tourist::query() -&gt;select('id', 'name as customer_... -
laravel join 关联查询
2019-04-26 09:38:211、两表关联 $fbaInventoryTb = (new \App\Model\Amz\Fba\InventoryReport)->getTable(); $productTb = (new \App\Model\Amz\Product)->getTable(); $twInventoryTb = (new \App\Model\T... -
关于Laravel的多表查询方法
2015-12-18 12:05:40之前写了一个遇到了多表查询的问题,现在就来写一下: $data = DB::table('stu_searches') //将两张表拼接起来 ->join('stu_msgs', function($join) { $join->on('stu_searches.stu_id', '=', 'stu_... -
Laravel框架中连表查询
2020-09-08 09:54:05联表查询 联表要求至少得有2张表(除了自己连接自己),并且还是存在关系的两张表。 例如:可以建立2张表:文章表、作者表。 文章表(article): Id 主键 Article_name 文章名称 Author_id 作者(作者id... -
使用Laravel和两个WHERE条件查询两个表
2016-06-17 10:08:19<p>This is the query but I don't know how to implement it in Laravel <pre><code>SELECT orders. * , payments. * FROM orders INNER JOIN payments ON orders.user_id = payments.userID WHERE orders.user_... -
laravel框架(联表查询)
2020-06-01 16:55:00联表要求至少有两张表(除了自己连接自己,自联查询),而且还是存在关系的两张表。 例如:可以建立两张表:文章表、作者表 文章表(article): id 主键 article_name 文章名称,varchar(50),notnull author_id ... -
laravel查询重复的数据_laravel:查询获取重复记录laravel
2020-12-20 19:41:32我在结果中显示了两条记录,尽管该表只有一条 .$side_messages = Message::orderBy('id' , 'desc') ->where('to_id' , Auth::id())->orWhere('from_id' , Auth::id())->first(); dd($side_messages);结果... -
Laravel 5.4查询生成器SUM()来自两个不同的表
2017-08-08 02:44:51<p>I'm having problems getting the SUM of a certain field from two tables. <p>So to start things off, here's my query. <pre><code> //Getting of Cost of Goods Sold (Menus) $totalMenuCost = DB::... -
laravel中数据库查询leftJoin应注意的问题
2016-08-14 10:13:26在用laravel框架使用关联查询时,如果关联的表使用了假删除,则会很容易忽略这个deleted_at字段的存在。 因此,有两种方法可以避免: 1.加上deleted_at字段是否为null的条件 2.使用实例查询。 -
Laravel DB类两表第二个表关联条件多条时显示一条
2019-07-07 18:15:49Laravel DB类两表第二个表关联条件多条时显示一条 就是以第一个表为主表,查询出的数据以第一个表为准。 我们假设有两个表,A表,B表 A表的结构数据如下 id name 1 张三 2 李四 3 赵五 B表的结构数据... -
hibernate 表映射查询指定列_3分钟短文 | Laravel获取关联表指定列的3个方法
2020-12-25 18:14:28引言在数据库表的设计时,对不同的功能进行切分,分割为不同的表进行存储。在业务逻辑中,再将需要连接的数据进行整合输出。今天我们说一说,在Laravel中,如何关联模型,以及制定返回列,以精简返回数据。学习时间... -
laravel CURD 查询构造器
2017-09-29 10:15:39插入 更新 删除 查询 Get所有表数据 First 结果集中的第一条 Where whereraw条件 Pluck 结果集中指定的字段 ...Select 指定查询字段 ...每次查询两条 停止可用 聚合函数 -
Laravel 5如何将两个相关表插入(多个)到一个查询中
2016-12-10 11:01:04<p>I have a table which is <code>Order</code> and <code>Product</code> <li>orders table: id, order_name <li>products table: id, orders_id, product_name ...<p>In my model: <code>Order</code> can... -
PHP中Laravel 关联查询返回错误id的解决方法
2020-12-20 07:33:41在 Laravel Eloquent 中使用 join 关联查询,如果两张表有名称相同的字段,如 id,那么它的值会默认被后来的同名字段重写,返回不是期望的结果。例如以下关联查询: PHP $priority = Priority::rightJoin('touch', ... -
laravel中查询字段相同的问题
2018-10-25 10:01:30查询一表或多表过程中 若遇到条件为字段相同或者不同时 往往会出现很多问题 例如表中含有user_name字段和nickname两个字段: User::where('user_name','=','nickname')->get(); 这种方法不可取 应采用 ... -
laravel model 两个table_Laravel模型间关系设置分表方法
2020-12-25 18:14:39php中文网最新课程每日17点准时技术干货分享在实际开发中经常用到分库分表,比如用户表分成 100 张,那么这个时候查询数据需要设置分表,比如 Laravel 的 Model 类中提供了 setTable 方法:/** * Set the table ... -
Laravel5.1 模型--查询
2019-10-06 15:17:41前两天病了。。一直没写笔记,今儿个来看看Model在实际开发中的一些简单使用,首先 我们来为今天的学习做个铺垫,也当做复习了 准备工作 1、生成表 ...use Illuminate\Database\Schem... -
# Laravel5.8 模型内联一对一查询数据
2020-04-14 15:00:00Laravel5.8 模型内联一对一查询数据 举例,有user(用户)表和role(角色)两张表, user表 role表 既然是模型内联查询,当然要有User表的MODEL类文件和Role表的Role的类文件,MODEL类文件里面的功能根据自己需要... -
laravel实现一对多关联模型数据查询
2020-11-09 11:46:35laravel实现一对多关联模型数据查询 我们目前有users表和posts两张表,users表存放的是作者信息,比如作者名称等 posts表和users表关联的字段是author_id 现在我们要在展示文章数据的时候同时展示作者名称 那么,... -
Laravel框架学习(数据库高级查询)
2017-11-03 16:53:29连接查询指的是将两张表或多张表关联到一起进行查询,获取一个表的行与另一个表的行匹配的数据。常见的连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。 我们将用户表... -
Laravel 数据库实例教程 —— 使用查询构建器实现对数据库的高级查询
2018-08-10 16:16:30连接查询指的是将两张表或多张表关联到一起进行查询,获取一个表的行与另一个表的行匹配的数据。常见的连接查询包括内连接(等值连接)、左(外)连接、右(外)连接和交叉连接(完全连接)等。下面这张图形象的展示...
-
物联网基础篇:快速玩转MQTT
-
NoClassDefFoundError和ClassNotFoundException的区别
-
Campinas-Tech-talents:Atividades feitas na trilha Java,patrocinado pela Assertiva,do curso Campinas Tech Talents-源码
-
矩阵键盘(4*4)+1602显示+protues仿真
-
CAS 单点登录实现
-
ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57
-
i.MX6ULL终结者进程间通信 有名管道
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
MySQL NDB Cluster 负载均衡和高可用集群
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
Docker从入门到精通
-
Linux安装java常用开发docker环境
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
CSS——CSS变量
-
[Mercury landing-水星迫降] v4.0.7z
-
会员注册页面的交互细节
-
在 Linux 上构建企业级 DNS 域名解析服务
-
树模型问题汇总
-
MySQL 高可用工具 heartbeat 实战部署详解
-
龙芯生态应用开发基础:C语言精要