<h2>admin/controller/User.php</h2>
namespace app\admin\controller;
use app\admin\controller\Common;
use app\admin\model\User as UserModel;
use app\admin\model\Group as GroupModel;
use think\Request;
class User extends Common
{
public function read($uid=[],$map='')
{
//批量数据查询
if(is_array($uid)){
//条件查询
if(!empty($map)){
$uid = UserModel::where($map)->column("uid");
}
//如果uid为空,代表全查
$users = UserModel::all($uid);
foreach ($users as $key => $value) {
$data = Array();
//为模型的字段赋值
$userdata[$key] = $value->getData();
//获取当前记录的模型
$user = UserModel::get($value['uid'],'profile');
/*1对1关联*/
$userdata[$key]['profile'] = $user->profile->getData();
/*1对多关联*/
foreach ($user->hobby as $k => $v) {
$userdata[$key]['hobby'][$k]=$v->getData();
}
/*多对多关联*/
foreach ($user->group as $k => $v) {
$userdata[$key]['group'][$k]=GroupModel::get($v['gid'])->getData();
}
}
}else{//单一数据查询
$user = UserModel::get($uid,'profile');
$userdata = $user->getData();
/*1对1*/
$userdata['profile'] = $user->profile->getData();
/*1对多关联*/
foreach ($user->hobby as $k=>$v) {
$userdata['hobby'][$k]=$v->getData();
}
/*多对多关联*/
foreach ($user->group as $k => $v) {
$userdata['group'][$k]=GroupModel::get($v['gid'])->getData();
}
}
return $userdata;
}<h2>admin/model/user.php</h2>namespace app\admin\model;
use think\Model;
class User extends Model
{
protected $table = 'user';
protected $pk = 'uid';
protected $autoWriteTimestamp = true;
/*1對1*/
public function profile(){
return $this->hasOne('Profile','uid')->field('uid,truename,birthday,phone,address');
}
/*1對多*/
public function hobby(){
return $this->hasMany('Hobby','uid');
}
/*多對多*/
public function group(){
return $this->belongsToMany('Group','user_group','gid','uid','GM');
}
}<h2>admin/model/profile.php</h2>namespace app\admin\model;
use think\Model;
class Profile extends Model
{
// 设置当前模型对应的完整数据表名称
protected $table = 'profile';
protected $pk = 'uid';
}<h2>admin/model/hobby.php</h2>namespace app\admin\model;
use think\Model;
class Hobby extends Model
{
protected $pk = 'hid';
protected $table = 'hobby';
public function user(){
return $this->belongsTo('User');
}
}<h2>admin/model/group.php</h2>namespace app\admin\model;
use think\Model;
class Group extends Model
{
protected $pk = 'gid';
protected $table = 'group';
} 