Laravel框架中连表查询

联表查询

联表要求至少得有2张表(除了自己连接自己),并且还是存在关系的两张表。

例如:可以建立2张表:文章表、作者表。

文章表(article):

	Id					主键
	Article_name		文章名称
	Author_id			作者(作者id)

作者表(author):

	Id					主键
	Author_name			作者名称

①创建迁移文件

#php artisan make:migration create_article_table
#php artisan make:migration create_author_table

在这里插入图片描述

②相继编写2个迁移文件的代码

文章表的迁移代码:
在这里插入图片描述
在这里插入图片描述

作者表的迁移代码:
在这里插入图片描述在这里插入图片描述

③执行生成数据表的迁移文件

#php artisan migrate

在这里插入图片描述在这里插入图片描述

④模拟数据(通过填充器来实现)
a. 创建填充器文件(可以将多个数据表的写入操作写在一起)

#php artisan make:seeder ArticleAndAuthorTableSeeder

在这里插入图片描述

b. 编写数据模拟的代码
在这里插入图片描述
在这里插入图片描述

c. 需要执行填充器文件

#php artisan db:seed --class=ArticleTableSeeder
#php artisan db:seed --class=AuthorTableSeeder

在这里插入图片描述

数据表的结果:
在这里插入图片描述在这里插入图片描述

案例:要求查询数据表(文章表、作者表),查询出文章的信息包含了作者名称。
例如:查询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 left
join author as t2 on t1.author_id = t2.id;

将上述的sql语句改成链式操作:
语法:DB门面/模型 -> join联表方式名称(关联的表名,表1的字段,运算符,表2的字段)
在这里插入图片描述

a. 创建需要的路由
在这里插入图片描述

b. 创建test18方法,实现将sql语句改写成链式操作实现刚才的案例效果
在这里插入图片描述

显示结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45062472/article/details/108461679