TP5模型关联操作

1. manager表的 mg_role_id 关联 zq_role 表的 role_id

2. 在manager model中, 写入关联表 role, 注意这里的参数结构, 最后一个是 manager的外键.

//一对一关联, 和role角色表关联
public function role()
{
    return $this->hasOne('role', 'role_id', 'mg_role_id');
}

3. 控制器中调用, 用with方法调用, 如果多个, 就在with里面添加.

// 管理员列表请求ajax
public function zlistAjax()
{
    $res = ManagerModel::with('role')->select();

    foreach ($res as $v) {
        dump($v->toArray());
    }

    //dump($data);
}

参考:  http://www.thinkphp.cn/code/4739.html

上面这些情况, 返回的数据类型为如下, 这种不好做layui的接口. 
 

array(13) {
  ["mg_id"] => int(25)
  ["mg_name"] => string(2) "zq"
  ["mg_tname"] => string(2) "zq"
  ["mg_pwd"] => string(9) "zl4921272"
  ["mg_pid"] => int(0)
  ["mg_path"] => string(0) ""
  ["mg_level"] => int(0)
  ["mg_xm"] => string(0) ""
  ["mg_xm_ch"] => string(3) "all"
  ["mg_time"] => string(19) "2018-06-11 16:18:43"
  ["mg_last_time"] => string(19) "2019-01-08 17:01:32"
  ["mg_role_id"] => int(52)
  ["role"] => array(6) {
    ["role_id"] => int(52)
    ["role_name"] => string(15) "超级管理员"
    ["role_auth_ids"] => string(0) ""
    ["role_auth_ac"] => string(0) ""
    ["role_addtime"] => int(1532162457)
    ["role_lasttime"] => int(1532169457)
  }
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二种方法: 第一种方法, 连表的数据会以二维数组的形式来返回. 这样不符合layui要求的数据格式. 我们采用下面的方式, 将返回值做成一位数组的形式.

public function zq01()
{
    $manager = new ManagerModel();
    $info    = $manager->alias('a')
        ->join('zq_role b', 'a.mg_role_id = b.role_id', 'LEFT')
        ->select();

    foreach ($info as $v) {
        $data[] = $v->toArray();
    }
    dump($data);

}

返回的数据格式为 一位数组, 可以满足layui的需求.

[0] => array(18) {
    ["mg_id"] => int(25)
    ["mg_name"] => string(2) "zq"
    ["mg_tname"] => string(2) "zq"
    ["mg_pwd"] => string(9) "zl4921272"
    ["mg_pid"] => int(0)
    ["mg_path"] => string(0) ""
    ["mg_level"] => int(0)
    ["mg_xm"] => string(0) ""
    ["mg_xm_ch"] => string(3) "all"
    ["mg_time"] => string(19) "2018-06-11 16:18:43"
    ["mg_last_time"] => string(19) "2019-01-08 17:01:32"
    ["mg_role_id"] => int(52)
    ["role_id"] => int(52)
    ["role_name"] => string(15) "超级管理员"
    ["role_auth_ids"] => string(0) ""
    ["role_auth_ac"] => string(0) ""
    ["role_addtime"] => int(1532162457)
    ["role_lasttime"] => int(1532169457)
  }

-----------

如果是 数据库连表的话

			  $schoolstation_rs=Db::name('school')
			
			    ->field('a.id,a.title,b.sid,b.price') 
			    ->alias('a')
				->join('schoolstation b','a.id = b.sid')
			    ->where('a.pid',$rs['sid'])
			    ->where('a.flid',2)
			    ->select();
				$this->assign('schoolstation_rs',$schoolstation_rs);
发布了88 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/codipy/article/details/99947514