ThinkPHP一对多的关联模型运用

一、序言

最近在写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()
     * 第一个参数:要关联的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值