5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7071|回复: 2

[TP5学习] 10 ThinkPhP5 查询语言-上

[复制链接]

670

主题

785

帖子

8228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8228
发表于 2019-6-10 19:03:41 | 显示全部楼层 |阅读模式
1、ID等于4
$result = Db::name('data')->where('id',4)->find();
2、ID大于4
$result = Db::name('data')->where('id','>=',4)->find();
这里的'id','>=',4可以换成<=<>'in',[5,6,7,8]'between',[5,8]
3、查询某个字段是否为NULL$result = Db::name('data')->where('name','null')->select();

4、使用exp条件表达式,表示后面在部分使用SQL原声语句查询,不建议用
$result = Db::name('data')->where('id','exp'," like '%1%' ")->select();

5、多个字段查询就多写几个where
$result = Db::name('data')->where('id','>=',4)
->where('name','like','%5UCMS.COM%')
->select();
或数组式where,但写起来麻烦,不推荐,知道可以这样写即可
$result = Db::name('data')
->where([   'id' => ['>=',4],
   'name' => ['like','%5UCMS.COM%']->select();

6、OR的话,where后多加其他条件,最后再加上'or'即可
$result = Db::name('data')->where('id','>=',4)
->where('cid',['in',[1,2,3]],['>=',1],'or')
->limit(2)
->select();

批量查询(不推荐,写起来麻烦)

$result = Db::name('data')
->where([
        'cid' => [['in',[1,2,3]], ['>=',1], 'or')],
        'name' => ['like', '%php&']
        ])
->limit(2)
->select();


7、快捷查询
和用&符号,代表多个字段
$result = Db::name('data')->where('id&status','>=',4)
->select();
或用|符号,代表多个字段
$result = Db::name('data')->where('id|status','>=',4)
->select();





回复

使用道具 举报

670

主题

785

帖子

8228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8228
 楼主| 发表于 2019-6-10 20:27:25 | 显示全部楼层
难点,视图查询

  1. Db::view('User', 'id,name') //从表User中取id和name字段
  2.     ->view('Profile', 'truename,phone,email', 'Profile.user_id=User.id') //从表Profile中取三个字段,设置查询where条件为表Profile的user_id字段=表User的id字段
  3.     ->view('Score', 'score', 'Score.user_id=Profile.id') //从表score中找score字段,条件为score表的user_id字段=表profile下的id字段
  4.     ->where('score', '>', 80) //三表在一起后,找score数据大于80的
  5.     ->select();
复制代码


对应SQL语句,请删除@部分后阅读使用

  1. SE@LECT User.id,User.name,Profile.truename,Profile.phone,Profile.email,Score.score FR@OM think_user User INN@ER JO@IN think_profile Profile O@N Profile.user_id=User.id INN@ER JO@IN think_socre Score ON Score.user_id=Profile.id WH@ERE Score.score > 80
复制代码
回复 支持 反对

使用道具 举报

670

主题

785

帖子

8228

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8228
 楼主| 发表于 2019-6-10 20:36:11 | 显示全部楼层
使用Query对象
  1. $query = new \think\db\Query;
  2. $query->name('data')->where('name','like','%think%')
  3. ->where('id','>=','1')
  4. ->limit(10);
  5. $result = Db::select($query);
  6. print_r($result);
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-3-29 15:06 , Processed in 1.484375 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表