php jion用法,ThinkPHP关于JOIN使用方法详细说明

ThinkPHP 经常会遇到多表查询,最近的一个项目就是要同时查询四个表,当然 sql 也要使用多表查询了,只是在 where 的时候有些困难,研究了大半天的时间,终于给搞出来了,好了,先看看 ThinkPHP 中关于 JOIN 多表查询的使用吧,其它查询部分一切照旧。

JOIN方法是连贯操作中唯一可以多次调用的方法

分别查询表artist、work、card 、card

JOIN 有两种方式:LEFT JOIN(默认使用)与RIGHT JOIN

//Left Join

$Model->join(‘work ON artist.id = work.artist_id’)->join(‘card ON artist.card_id = card.id’)->select();

$Model->table(‘user U’)->join(‘news N on U.id=N.cid’)->field(‘U.*,N.*’)->order(‘id desc’)->limit(‘8’)->select();

//Left Join

$Model->table(‘user U’)->join(‘news N on U.id=N.cid’)->field(‘U.*,N.*’)->order(‘id desc’)->limit(‘8’)->select();

//Right Join

$Model->join(‘RIGHT JOIN work ON artist.id = work.artist_id’)->select();

//xiariboke.com

$Model->table(‘user U’)->join(array(‘right’,’news N on U.id=N.cid’))->field(‘U.*,N.*’)->order(‘id desc’)->limit(‘8’)->select();

在写好 JOIN 之后,在使用 where 的时候,要指定表名,例如 where 条件:

//Left Join

$Model->join(‘work ON artist.id = work.artist_id’)->join(‘card ON artist.card_id = card.id’)->wehre(“artist.card_id =10”)->select();

再来分享我写的一个 ThinkPHP 查询方法,可以当作正常的列表来使用,也可以直接 post 当作搜索来使用,代码如下:

public function index(){

$model = M(‘sequence_code’);

import(“@.ORG.Page”);

$count  = $model->count();

$Page   = new Page($count);

if ($_POST[phone]){

$where[‘xn_sequence_code.phone’] = array(‘like’,“%”.$_POST[‘phone’].“%”);

}

$this->list = $model->where($where)->field(‘xn_sequence_code.id,xn_sequence_code.scode,xn_sequence_code.phone,xn_sequence_code.is_use,xn_sequence_code.use_date,xn_demand.title,xn_insurance_deepconfig.gradename,xn_member.nickname’)->join(‘left join xn_demand on xn_demand.id=xn_sequence_code.type_id left join xn_insurance_deepconfig on xn_insurance_deepconfig.id=xn_sequence_code.grade_id left join xn_member on xn_member.mobile=xn_sequence_code.phone’)->limit($Page->firstRow. ‘,’ . $Page->listRows)->order(‘xn_sequence_code.id desc’)->select(); //xiariboke.com

$this->page=$Page->show();

$this->display();

}

重点在于 sql 语句的拼接和 where 条件语句,之前我使用的一直是不带表名的 where 语句,导致查询不成功,如果是只有两个表的查询,where 语句不带表前缀是可以的,如果是多表的话就不行,这里有个细微的区别,害得我搞了半天。

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。导航:艺宵博客 » ThinkPHP关于JOIN使用方法详细说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值