ddddd

thinkphp 5中的混合查询

作者:程序员11 时间:2021-12-06 人气:484 QQ交流群\邮箱:1003265987@qq.com
thinkphp 5中的混合查询ThinkPHP多表联合查询的常用方法
要展示的内容
1.手册样例thinkphp 5.0
Db::table('think_user')    ->where('name',['like','thinkphp%'],['like','%thinkphp'])    ->where(function($query){        $query->where('id',['<',10],['>',100],'or');    })    ->select();
相当于sql语句:
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp' ) AND ( `id` < 10 or `id` > 100 )
2.手册样例 thinkphp 5.1
Db::table('think_user')    ->where('name', ['like', 'thinkphp%'], ['like', '%thinkphp'])    ->where(function ($query) {
        $query->where('id', ['<', 10], ['>', 100], 'or');    })    ->select();
相当于sql语句:
SELECT * FROM `think_user` WHERE ( `name` LIKE 'thinkphp%' AND `name` LIKE '%thinkphp' ) AND ( `id` < 10 or `id` > 100 )
3.function($query)传参数用use()
样例:
Db::table('think_user')
->where($where)
->where(function($query) use($group_id){
   $query->where(Db::raw("group_id is null or group_id = '$group_id'"));   //Db::raw()可以直接写sql语句查询
})
->select();
Db::table('think_user')

ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示:

1、原生查询示例:

$Model = new Model();

$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;

$voList = $Model->query($sql);

2、join()方法示例:

$user = new Model('user');

$list = $user->join('RIGHT JOIN user_profile ON user_stats.id = user_profile.typeid' );

Thinkphp使用join联表查询的方法

$user = M('user');

$b_user = M('b_user');

$c_user = M('c_user');

$list = $user->alias('user')->where('user.user_type=1')

  ->join('b_user as b on b.b_userid = user.user_id')

  ->join('c_user as c on c.c_userid = b.b_userid')

  ->order('b.user_time')

  ->select();

$user 表的 user_id 等于$b_user表的b_userid;


$c_user表的 c_userid 等于$b_user表的b_userid;

3、table()方法示例:

$list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();


温馨提示:

欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。

thinkphp 5中的混合查询---相关文章


评论区

ddddd

程序员-学习的网站-想学习编程的码农可以进来看看

首页

视频教程

购物车

我的订单