广告位 |
thinkphp数据库模型一对多关联
2021年9月25日 10:54编程 > 2492人已围观
简介 关联模型(必须):关联模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_id 主键:当前模型主键,一般会自动获取也可以指定传入...
关联定义
一对多关联的情况也比较常见,使用hasMany
方法定义,参数包括:
hasMany('关联模型','外键','主键');
除了关联模型外,其它参数都是可选。
关联模型(必须):关联模型类名
外键:关联模型外键,默认的外键名规则是当前模型名+
_id
主键:当前模型主键,一般会自动获取也可以指定传入
例如一篇文章可以有多个评论
<?php namespace app\model;use think\Model;class Article extends Model { public function comments() { return $this->hasMany(Comment::class); }}
同样,也可以定义外键的名称
<?php namespace app\model;use think\Model;class Article extends Model { public function comments() { return $this->hasMany(Comment::class,'art_id'); }}
关联查询
我们可以通过下面的方式获取关联数据
$article = Article::find(1);// 获取文章的所有评论dump($article->comments);// 也可以进行条件搜索dump($article->comments()->where('status',1)->select());
根据关联条件查询
可以根据关联条件来查询当前模型对象数据,例如:
// 查询评论超过3个的文章$list = Article::has('comments','>',3)->select();// 查询评论状态正常的文章$list = Article::hasWhere('comments',['status'=>1])->select();
如果需要更复杂的关联条件查询,可以使用
$where = Comment::where('status',1)->where('content', 'like', '%think%');$list = Article::hasWhere('comments', $where)->select();
关联新增
$article = Article::find(1);// 增加一个关联数据$article->comments()->save(['content'=>'test']);// 批量增加关联数据$article->comments()->saveAll([ ['content'=>'thinkphp'], ['content'=>'onethink'],]);
定义相对的关联
要在 Comment 模型定义相对应的关联,可使用 belongsTo
方法:
<?php name app\model;use think\Model;class Comment extends Model { public function article() { return $this->belongsTo(Article::class); }}
关联删除
在删除文章的同时删除下面的评论
$article = Article::with('comments')->find(1);$article->together(['comments'])->delete();
广告位 |
相关文章
随机图文
-
thinkphp定义模型
定义一个模型类很简单,例如下面是一个User模型: <?php namespace app\model;use think\Model;class User extends Model{}... -
出圈的B站,走不出“网络侵权”围城
在8月公布2021 Q2财报后,B站虽然暂时遏制住了股价下跌的颓势,但亏损持续扩大,游戏业务依旧疲软,以及国内政策日趋收紧等情况,导致市场对于“破圈”之后的发展不再像之前那样盲目乐观,这使得压力重新回到了B站的身上。... -
十年前,十年后 – 重新认识我们的人生
引导语:不知道十年的时间究竟有多长。十年前,在我们的脑海中;十年后,却在深深的心底。时光煮雨,我们在时间上行走。我们是拥有情感的人类,我们在亲情、爱情、生活、信念、友情的岁月冲洗下,十年前,十年后,我们的情感有了什么变化……... -
献礼祖国72华诞:有一种骄傲,叫我是中国人!
金秋十月迎国庆,礼炮声声震天下! 今天,2021年10月1日,是祖国七十二周年华诞,是亿万中国同胞普天同庆的好日子! 家是最小国,国是千万家!没有国,哪有家?没有家,哪有你我!...