广告位 |
thinkphp数据库模型一对多关联
2021年9月25日 10:54编程 > 2489人已围观
简介 关联模型(必须):关联模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_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();
广告位 |
相关文章
随机图文
-
联商首页资讯动态正文 什么才是自有品牌真正的核心?
疫情改变了世界,更改变了认知。对自有品牌这件事,说是战略也好,策略也好,都不是重要的问题。最关键的问题是:你能拿出好东西,并且被消费者接受。有些事,很久才能知道对错,自有品牌开发就是这样的事儿。... -
苹果iPhone 13系列等新品正式迎来发售
苹果iPhone 13系列、新款iPad和iPad mini等新品正式迎来发售。由于时差原因,全球部分地区用户已“提前”拿到iPhone 13系列新品。 目前,部分iPhone 13 预购用户已可在 Apple Store 应用看到订单状态更改为“准备取货”。天猫、京东等电商平台购买的手机已经陆续发货,预计在明后两天就能收到。... -
thinkphp数据模型修改器
和获取器相反,修改器的主要作用是对模型设置的数据对象值进行处理。 修改器方法的命名规范为:... -
iPhone 13系列配备了更大的电池
随着所有四款iPhone 13都开始在世界各地发售,YouTube上开始出现了对这些设备的拆解。值得注意的是,拆解显示了所有四款机型的电池容量。...