15年软件开发经验 只做源码定制 互联网+定制化解决方案

15年软件开发经验,只做源码定制!

原创设计 定制开发

满足您的个性化需求

当前位置:首页 后端开发 Thinkphp5

学习Thinkphp5模型关联

闫志林| 发布于 2021-10-15 18:14:45| 140阅读| 2点赞| 0评论
举报

记录tp学习

1. 将表与表之间进行关联和对象化,更高效的操作数据;

有三张表  

1)user

2)course

3)buycourse 记录被购买课程 和 购买用户

course ->> buycourse  一对多

user ->> buycourse  一对多


2.模型关联

hasMany('关联模型',['外键','主键']);
return $this->hasMany('Profile','user_id', 'id');
关联模型(必须):模型名或者模型类名
外键:关联模型外键,默认的外键名规则是当前模型名+_id
主键:当前模型主键,一般会自动获取也可以指定传入

class User extends Model{
        protected $auto = ['create_time'];
        protected $type = [
            'create_time' => 'timestamp:Y/m/d H:m:s',
        ];
        public function profile(){
            return $this->hasOne('Profile');
        }

        public function buy(){
            return $this->hasMany('app\model\Buycourse');
        }
    }
class Buycourse extends Model{

        protected $auto = ['buytime'];

        protected $type = [
            'buy_time' => 'timestamp:Y/m/d H:m:s',
        ];

        public function course(){
            return $this->belongsTo('Course','course_id','id');
        }

        public function user(){
            return $this->belongsTo('app\user\model\User');
        }
    }
class Course extends Model
{

    protected $type = [
        'create_time' => 'timestamp:Y/m/d H:m:s',
    ];
    protected $auto = ['create_time'];
    protected $insert = ['is_top' => 1];
    // protected function setCreateTimeAttr(){
    //     return time();
    // }
 
    public function info()
    {
        return $this->hasMany('CourseInfo');
    }

    public function buyc(){
        return $this->hasMany('app\model\Buycourse');
    }
    

这样用buycourse实例就可以获取另外两张表字段

buycourse->user->profile->name (profile是user关联表可以这样访问字段)把查询结果存储到数组在输出到视图模版。

要多读两遍tp5和php手册


2

0条评论

别默默看啦~登录/注册一起参与讨论吧~

热门标签

闫志林
微信扫一扫立即咨询
账号登录|扫码登录

立即注册 |忘记密码?

欢迎注册

已有账号马上登录

重置密码

扫码绑定微信
微信扫一扫

绑定手机号

分享到-微信

举报

  • 举报类型:

  • 举报描述:

您好,当前积分不足。

在线客服
拨打电话
17330196230 13230981129
顶部