有关TP5 模型关联随笔

一对一关联
hasOne(‘关联模型’,‘外键’,‘主键’);
关联模型(必须):关联的模型名或者类名
外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id
主键:当前模型主键,默认会自动获取也可以指定传入

一对多关联
hasMany(‘关联模型’,‘外键’,‘主键’);
关联模型(必须):模型名或者模型类名
外键:关联模型外键,默认的外键名规则是当前模型名+_id
主键:当前模型主键,一般会自动获取也可以指定传入

一对一关联
belongsTo(‘关联模型’,‘外键’,‘主键’);
关联模型(必须):关联的模型名或者类名
外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id
主键:当前模型主键,默认会自动获取也可以指定传入

/**
 * 文章模型
 * Class Article
 * @package app\common\model
 */
class Article extends BaseModel
{
    protected $name = 'article';

    /**
     * 关联文章封面图
     * @return \think\model\relation\HasOne
     */
    public function image()
    {
        return $this->hasOne('uploadFile', 'file_id', 'id');// 关联的模型,外键,当前模型的主键

    }

    /**
     * 关联文章内容图
     * @return \think\model\relation\HasOne
     */
    public function article_image()
    {
        return $this->hasMany('Image', 'image_id', 'id');// 关联的模型,外键,当前模型的主键
    }

如果通过内容图关联查询文章内容

/**
 * 图片模型
 * Class Image
 * @package app\common\model
 */
class Image extends BaseModel
{

    /**
     * 关联文章
     * @return \think\model\relation\HasOne
     */
    public function image()
    {
        return $this->belongsTo('Article', 'file_id', 'image_id');// 关联的模型,外键,当前模型的主键
    }


belongsTo和hasOne这两个方法的区别
在关系型数据库中,表之间有一对一、一对多、多对多的关系
一对一关系,存在主从关系(主表和从表 ),主表不包含外键,从表包含外键。

hasOne 和 belongsTo 都是一对一关系,区别:
在主表的模型中建立关联关系,用 hasOne
在从表模型中建立关联关系,用 belongsTo

如果还觉得不够详细可以参考下面文章
实例讲解TP5中关联模型:https://blog.csdn.net/github_37512301/article/details/75675054

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值