tp5的模型练习

浏览:5584 发布日期:2017/04/11 分类:用法示例 关键字: 有问题,请留言。多谢批评
写了一个读取数据的方法,用到了tp5的模型知识
<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';
}
评论( 相关
后面还有条评论,点击查看>>