广告位 |
thinkphp数据库模型一对多关联
2021年9月25日 10:54编程 > 358人已围观
简介 关联模型(必须):关联模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_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();
广告位 |
相关文章
随机图文
-
djangoueditor单图上传错误处理方法
现代浏览器采用X-Frame-Options HTTP标头,该标头指示是否允许在框架或iframe中加载资源。如果响应包含标头值为的标头,SAMEORIGIN则浏览器将仅在请求源自同一站点的情况下将资源加载到框架中。如果将标头设置为,DENY则无论哪个站点发出请求,浏览器都将阻止资源加载到框架中。... -
网页设计中的平面设计基础
随着信息时代的发展,互联网的普及,使互联网络成为“第四大信息传播的媒介”。网页设计以信息传播为裁体,两者之间紧密联系。作为互联网的重要元素之一——网页,它的发展虽然没有多长时间,但作为一种新的视觉表现形式,兼容了平面设计的特征,并具有迅捷,交互性好、传播面广等特点,为互联网络的信息传播提供良好的平台并且在教学中不断探索网页的设计理念,加上通知。... -
感谢生命中的那些过客
生命中总有一些来来往往的人,就像我们走路时马路上的那些过客,有与我们背道而行的,也有与我们走向同一个方向的。与我们背道而行的,也许我们转瞬即忘;也许,在生命中的某一天里,我们也还会偶尔地想起一下而已——他们在我们身后,已经越来越远。即使因为某些原因又重新折回来,可是因为相隔的太远,再努力恐怕也无法追得上。... -
django如何给上传的图片重命名
django如何给上传的图片重命名(给上传文件重命名) 1、先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码:...