有关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

猜你喜欢

转载自blog.csdn.net/weixin_40854327/article/details/106260801
今日推荐