whereOr是OR关系
buildSql();输出查询语句
DB: where直接使用 "EXP" 方式来写入条件
->where("id","EXP","not in (1,2,3)")
->buildSql()
Db:where 用法
进行sql的条件拼接 add或者or
->where('字段名','表达式','值')
->whereOr('字段名','表达式','值')
$db = Db::name('user');
$sql = $db
->where('id','in','1,2,3')
->whereOr('username','eq','morankin')
->whereOr('num','lt','10')
->where('email','morankin@qq.com')
->buildSql();
以上其实就是定义了一个筛选条件但是老师给的这个其实筛选条件没有什么必要 and 在我这里认为比or是 小一级的(后面会解释) , 条件满足id 为1,2,3,和email 为Morankin@qq.com 或者满足username 为morankin的 再或者 满足 num 小于10的
我任务这样其实我们就有了3个条件
一个为(id and email )一个为username 一个为num
其实怎么理解都可以,我这个我比较好理解罢了 但是这样的筛选条件其实没有必要,也可以说无意义的 毕竟是给大家练习的
不区分大小写
EQ =
NEQ <>
LT <
ELT <=
GT >
EGT >=
BETWEEM BETWEEN * AND *
NOTBETWEEN NOTBETWEEN * AND *
IN IN (*,*)
NOTIN NOT IN (*,*)
where 和 whereOr 并列使用的情况;
buildSql() 仅仅针对select 语句来生成sql 语句
$db = Db::name('user');
$sql = $db->where("id=1")
->whereor("username=17777")
->where("email =19574653152@qq.com")
-->builSql();
/*where 支持的格式 ("id=1") ("id",1)
("id!=1") ("id","<>",1)
("id","EXP","not in (1,2,3)")
*/
dump($sql);
whereOr 判断条件
e.g.:$sql=$db->where("id","in","1,2,3")->whereOr("username","eq","17771258")->buildSql();
$sql=$db->where([
'id'=>['in',[1,2,3]],
'username'=>'17771258'
])->buildSql();
buildSql();返回SQL语句
where('字段名','表达式','查询条件');
表达式 含义
EQ、= 等于(=)
NEQ、<> 不等于(<>)
GT、> 大于(>)
EGT、>= 大于等于(>=)
LT、< 小于(<)
ELT、<= 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询( 'id','in' ,'1,5,8'( [1,5,8] ) )
[NOT] NULL 查询字段是否(不)是NULL
[NOT] EXISTS EXISTS查询
EXP 表达式查询,支持SQL语法
> time 时间比较
< time 时间比较
between time 时间比较
notbetween time 时间比较
<!-- Db::table -->
Db::table('据库名')->where()->buildSql();
<!-- Db::name 方法同上 -->
Db::name('不戴前置数据库名')->where()->buildSql();
9ppppp
还有像这样复杂的
还有这样的
传三个值的时候
这样也可以
buildSql返回的是创建sql的那个语句
buildSql();返回SQL语句
where('字段名','表达式','查询条件');
表达式 含义
EQ、= 等于(=)
NEQ、<> 不等于(<>)
GT、> 大于(>)
EGT、>= 大于等于(>=)
LT、< 小于(<)
ELT、<= 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询( 'id','in' ,'1,5,8'( [1,5,8] ) )
[NOT] NULL 查询字段是否(不)是NULL
[NOT] EXISTS EXISTS查询
EXP 表达式查询,支持SQL语法
> time 时间比较
< time 时间比较
between time 时间比较
notbetween time 时间比较
<!-- Db::table -->
Db::table('据库名')->where()->buildSql();
<!-- Db::name 方法同上 -->
Db::name('不戴前置数据库名')->where()->buildSql();
数组的方式可以给 值的数组的第一个参数设置条件结构 where(['id' => ['LT',5]])等同于where('id<5')
也可以同时有两个查询条件,看截图
$db = Db::name('user'); #备注信息 #EQ = #NEQ <> #LT < #ELT <= #$GT > #EGT >= #BETWEEN BETWEEN * AND * #NOTBETWEEN NOTBETWEEN * AND * #IN IN (*,*) #NOTIN NOT IN (*,*) $sql = $db->where("id", "in","1,2,3") ->whereOr("username", "eq", "17771258") ->whereOr("num", 'lt', "10") ->where("email","17771258@qq.com") ->buildSql(); dump($sql);
$sql = $db->where('id','exp','not in (1,2,3)')->bulidSql();
eq = neq <> lt < elt <= gt > egt >= between notbetween in not in
$sql = $db->where("id",'lt','3')->buildSql();
$sql = $db->where('id','between','3,4')->buildSql();
$sql = $db->where('id','in',[1,2,3,41])->bulidSql();//in和between第三个参数可为数组或者字符串
where 条件构造器使用
使用的时候,建议使用这种方式where(
'username'
,
'eq'
,
'wenco_1'
)
如果是多个and关系可以使用数组或者多个where方法
->where(
'id'
,
'exp'
,
'not in(1,2,3)'
)
->whereOr(
'username'
,
'eq'
,
'wenco_1'
)来构造我们的where条件
EXP,类似于拼接的作用,在代码编译的时候把前后拼接起来
多个where依然可以
#where与whereOr 构成
or
的关系
#连续使用where方法构成
and
where条件
数组的方式可以给 值的数组的第一个参数设置条件结构 where(['id' => ['LT',5]])等同于where('id<5')
也可以同时有两个查询条件,看截图
where(['id=>1'])等同于where('id',1)等同于where('id=1');
where("id","between","1,5" 或者 [1,10])包括1和5
传递第三个参数20,是无效的,看截图;
图片中的 备注;不区分大小写;