THINKPHP5 一对多关联模型使用
  XEjeSkb2br30 2023年11月02日 69 0

今天在用到TP5一对多关联模型,在这里先大根说下使用方法

首先我有二个表

一个表user用来存放个人信息    大概数据结构如下

CREATE TABLE `tp_user` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `age` varchar(30) NOT NULL DEFAULT '',
  `name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;

 

别一个表为inspect_xm  用于存放用户下的多个体检项目

CREATE TABLE `tp_inspect_xm` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL DEFAULT '',
  `name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;

建模型文件

接下来是新建对应两张数据表的模型类文件。在模块下新建一个model目录然后新建两个文件并按对应的表命名:

User模型对应的是 tp_User 表

<?php

namespace app\admin\model;

use think\Model;

/**
 * 文章模型
 * @package app\admin\model
 */
class User extends Model{
    //uid为外键id是inspect_xm表关联user表的外键
    //id是 User表的主键
    public function InspectXm(){
        return $this->hasMany('InspectXm','uid','id');
    }


}

 在User模型定义好关联的方法之后在InspectXm模型里可以不用写任何对应的方法,但是必须最少要有一个对应 tp_Inspect_xm 表的空模型。

<?php
namespace app\admin\model;
use think\Model;
class InspectXm extends Model{

}

 

控制器调用

在控制器想要使用关联模型就需要先引入模型类,比如我上面是在User模型里定义了关联的方法,就需要把User模型引入控制器。

use app\index\model\User

 

控制器中查询

<?php
// 体检管理
namespace app\admin\controller;

use think\Db;
use think\Cache;
//use app\admin\model\User;
use app\admin\model\User as Ins;   //在使用上面的命名空间时我的报错提示冲突,然后我使用了别名



class Index extends Base{

	public function index(){
		//$Inspect = new Ins;
		$Inspect = Ins::get(1); //查询ID为1的数据
		$xm = $Inspect->InspectXm()->select()->toArray();
		var_dump($xm);
	}

}

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
XEjeSkb2br30
最新推荐 更多

2024-05-31