Warning: Undefined array key "zibbs_visit" in /www/wwwroot/www.qwesky.club/application/controllers/IndexController.php on line 100
十:Laravel联合查询,关联模型 — php — 我的学习笔记

十:Laravel联合查询,关联模型


$data = DB::table('article as t1')->select('t1.id','t1.article_name')->leftJoin('author as t2','t1.id','=','t2.id')->get();

关联模型(重点+难点)

1、一对一关系

例如:一篇文章只有一个作者

①创建模型

#php artisan make:model Home/Article

#php artisan make:model Home/Author


②修改模型文件

③关联模型的关联方法

注意:在写关联模型时候要分析出是谁关联谁,谁做主动关联的模型,案例:是文章管理作者,关联的代码写在主模型中。

public function 被关联的模型名小写(){

    return $this->hasOne('需要关联模型的命名空间','外键:被关联模型','本地键:本模型中的关联键);

}

关联关系是使用方法:使用动态属性进行调用

使用一对一关联关系之后,可以替代之前写的join联表操作。


2、一对多关系

例如:一篇文章有多个评论

#php artisan make:model Home/comment_table

3、多对多关系

例如:一个文章有多个关键词,一个关键词可能被多个文章使用。

多对多的关系经过拆分其实就是两个一对多的关系。由于是双向一对多的关系,

因此光靠2张表式无法建立关系的,需要依靠第三张表建立关系。

当前已经有文章白哦,因此还需要关键词表和关系表。

关键词表:

    字段id   主键

    字段keyword  关键词

文章与关键词的关系:

    字段id  主键

    字段article_id  文章ID

    字段key_id    关键词ID

语法:

    return $this->belongsToMany(被关联模型的命名空间,多对多模型的关系表名,当前模型中的关系键,被关联模型的关系键);






test2026-04-06 17:07