一对一关联
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