thinkphp 3.2 关联查询

Selecta.class1,a.class2,b.class3asclass3,a.rateasrate,a.rate2asrate2,b.rateasrateb,b.... Select a.class1,a.class2,b.class3 as class3,a.rate as rate,a.rate2 as rate2,b.rate as rateb,b.rate2 as rateb2,b.xr,b.blrate,b.gold,b.locked,b.adddate,b.mrate from 表1 a left join 表2 b on a.blid=b.id where b.id='条件' and a.guan='条件' Order By b.id Desc
请高手帮我写成thinkphp的关联查询例子
展开
 我来答
己学好4
推荐于2018-03-29 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:5197万
展开全部
首先,我们就瞎定义几张表吧!
1,user表:
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(20) default NULL,
`password` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
2,用户信息表:userinfo:
CREATE TABLE `userinfo` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`phone` varchar(22) default NULL,
`addirss` varchar(150) default NULL,
`age` varchar(10) default NULL,
`sex` varchar(10) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
3,用户应用表:
CREATE TABLE `userapp` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`app_name` varchar(20) default NULL,
`app_info` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8
说说三个表之间的关系吧,
用户表(user)和(userinfo)之间的关系:每个用户只对应一个用户信息,所以是一对一的关系HAS_ONE
用户表(user)和(userapp)之间的关系:每个用户可以对应多个应用,所以是一对多的关系HAS_MANY
我们要实现一个效果,就是查询是每个用户对应它的信息和它所有的应用,看看下面怎么实现吧!
第一:建立之间的对应关系:
在thinkphp之中,定义关联关系得用$_link变量,例如:public $_link = array();就写写他们的对应关系吧!
先建立控制器:UserAction.class.php
在建立对应模型:UserModel.class.php,这个得继承RelationModel类
class UserModel extends RelationModel {
public $_link = array (
//一对一关系
'userinfo' => array (
'mapping_type' => HAS_ONE, //定义为一对一关系
'class_name' => 'Userinfo'
),

//一对多关系
'userapp'=>array(
'mapping_type' =>HAS_MANY,//定义为一对多关系
'class_name'=>'Userapp',//对应的Model的类名
'foreign_key'=>'user_id', //对应的外键ID
'mapping_name'=>'Userapp', //获取值的名称
//'mapping_order'=>'create_time desc',
)
);
}
就这么简单,看看怎么把数据查询出来吧!
在控制器中 也就是action中写

class UserAction extends Action{
//一对一 一对多 关联查询
public function index(){
$User = D("User");
$u = $User->relation(true)->findAll();
//dump($u);
$this->assign('u',$u);
$this->display('index');
}
}
OK就这样完成了!

补充一点:就是必须建立userinfo表和userapp的模型模型名称和表名一致,例如:userinfo:UserinfoModel.class.php
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式