广告位 |
thinkphp数据库模型一对多关联
2021年9月25日 10:54编程 > 1190人已围观
简介 关联模型(必须):关联模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_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();
广告位 |
相关文章
随机图文
-
适量摄入坚果类有助身体健康
人民网北京5月28日电 近日,由人民网·人民健康主办的2020年全国两会“健康中国人”系列圆桌论坛在京举行。在27日举行的主题为“传播营养科学,守护大脑健康 ”的圆桌论坛上,原中国农业大学食品营养与安全系主任何计国表示,坚果类食品富含多种人体所需要的营养物质和大量的微量元素、矿物质,适量摄入有助于身体健康。... -
短视频行业开起“收徒做任务”模式,能战抖音、斗快手吗?
百度正用趣头条的模式「批量生产」属于自己的抖音。 马化腾没做成的短视频梦,李彦宏正在接力。但趣头条的噩梦,百度可能也要继承。... -
django部署静态文件访问
技术环境: python3.8 + centos7 +Django3 + gunicorn + nginx 1、settings.py配置:静态文件访问和存放目录... -
福田繁雄的平面设计理念
福田繁雄对平面设计的贡献,让二十世纪后期的设计产生了深远的影响,直到现在还在使用,今天小编主要给大家分享福田繁雄的平面设计理念,希望对你们有帮助!...