2017-08-22 20:37:32 1772次浏览 6条回答 0 悬赏 100 金钱

现在有2张表,user表和area表(用户表和区域表),user表有3个字段是provice_id,city_id,area_id(省市区id),这3个字段都对应area的主键id,area表就只有id和name字段,
现在我要查用户信息,信息里要省市区的name字段,如何快速联表取出数据,主要是现在3个外键了,不知道怎么写sql了??

  • 回答于 2017-08-23 08:50 举报

    只拿到id咯,另外单独查询id对应的name

  • 回答于 2017-08-23 08:56 举报

    想考虑效率,起码给area表增加level字段;

    function getProvice(){
      return $this->hasOne('are表',['id'=>'provice_id']);
    }
    function getCity(){
      return $this->hasOne('are表',['id'=>'city_id']);
    }
    function getArea(){
      return $this->hasOne('are表',['id'=>'area_id']);
    }
    

    有leve时,在加上where;想怎么查都行啊

    觉得很赞
  • 回答于 2017-08-23 10:00 举报

    加视图啊加视图

  • 回答于 2017-08-23 16:17 举报

    其实你说的就是一个一对多的问题,hasmany,去看下

  • 回答于 2017-08-24 14:33 举报
    SELECT area.name 
    FROM area 
    LEFT JOIN user
    ON area.id = user.provice_id
    WHERE 你想查的
    
  • 回答于 2017-08-25 14:14 举报

    模型。。
    function getProvice(){
    return $this->hasOne('are表',['id'=>'provice_id']);
    }
    function getCity(){
    return $this->hasOne('are表',['id'=>'city_id']);
    }
    function getArea(){
    return $this->hasOne('are表',['id'=>'area_id']);
    }

    引用二楼的
    在视图上可以写
    $model->provice->provice_name;
    $model->city->city_name;
    $model->area->area_name;
    我经常这么写,虽然不知道对不对 但效果出来了

您需要登录后才可以回答。登录 | 立即注册
xyf90314
副总裁

xyf90314

注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
  • 粉丝21
  • 金钱5257
  • 威望40
  • 积分6607

热门问题