一、序言
最近在写ThinkPHP关联模型的时候一些用法总忘,我就想通过写博客的方式复习和整理下一些用法。
具体版本:
- topthink/framework:6.1.4
- topthink/think-orm:2.0.61
二、实例应用
1、一对多的关联
本文案例:一个用户对应多篇文章,一篇文章对应多条评论。
以下是用户、文章、评论的模型建立:
(1)用户模型
<?php
/**
* Created by PhpStorm
* Author: fengzi
* Date: 2023/12/19
* Time: 14:50
*/
namespace app\common\model;
/**
* 用户模型
*/
class UserModel extends ComBaseModel
{
protected $name='user';
/**
* 文章关联表:一对多
* hasMany()
* 第一个参数:要关联的模型类
* 第二个参数:在关联表中表示当前模型的外键名
* 第三个参数:当前模型(userModel)的主键名
* @return \think\model\relation\HasMany
* @Author: fengzi
* @Date: 2024/7/3 11:40
*/
public function article()
{
return $this->hasMany(ArticleModel::class,'user_id','id');
}
/**
* 评论表模型:远程一对多关联
* hasManyThrough()
* 第一个参数(必须):关联的模型类
* 第二个参数(必须):中间表的模型类
* 第三个参数:在中间模型中表示当前模型的外键
* 第四个参数:在关联模型中表示当前模型的外键
* 第五个参数:当前模型主键
* 第六个参数:中间模型主键
* @return \think\model\relation\HasManyThrough
* @Author: fengzi
* @Date: 2024/7/3 11:42
*/
public function articleComment()
{
return $this->hasManyThrough(ArticleCommentModel::class, ArticleModel::class, 'user_id', 'user_id', 'id', 'id');
}
}
(2)文章模型
<?php
/**
* Created by PhpStorm
* Author: fengzi
* Date: 2023/12/19
* Time: 14:50
*/
namespace app\common\model;
/**
* 文章模型
*/
class ArticleModel extends ComBaseModel
{
protected $name='article';
/**
* 用户模型
* belongsTo()
* 第一个参数:关联模型类
* 第二个参数:在当前模型(ArticleModel)中表示关联模型(UserModel)的外键
* 第三个参数:关联模型主键
* @return \think\model\relation\BelongsTo
* @Author: fengzi
* @Date: 2024/7/3 13:54
*/
public function user()
{
return $this->belongsTo(UserModel::class, 'user_id', 'id');
}
/**
* 评论关联表:一对多
* hasMany()
* 第一个参数:要关联的


350

被折叠的 条评论
为什么被折叠?



