ThinkPHP项目where()中加入or的使用

本文介绍了在ThinkPHP项目中如何在where()中结合使用AND和OR进行复杂条件查询。通过示例展示了如何避免查询结果出现多余数据,并提供了正确的查询代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来了解Mysql and与or的使用
AND和OR可在WHERE子语句中把两个或多个条件结合起来
使用OR关键字时:
只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来。
如果不符合这些查询条件的任何一条,这样的记录将被排除。
使用AND关键字时:
需要符合所有条件,这样的记录就会被查询出来。
如果有任何一个条件不符合,这样的记录将被排除。
下面是写法:
由thinkPHP项目where()查询数据就是以AND为基础查询数据
而OR其中也给了whereOr()
但如果需要AND,OR结合查询,如where(),whereOr()

Db::table($company . ‘.vip_activity_courtesy’)
->where(‘start_time’, ‘<=’, time())
->where(‘end_time’, ‘>’, time())
->where(‘start_money’, ‘<=’, $money)
->where(‘end_money’, ‘>=’, $money)
->where(‘activity_type’, ‘支付’)
->where(‘status’, 0)
->where(‘store_all’, “”)
->whereOr(‘store_all’, null)
->select();

这样查询会出现符合where()查询的条件的数据加上whereOr()查询的数据
出现数据多余。
而想要AND,OR结合查询
dataOne=Db::table(dataOne = Db::table(dataOne=Db::table(company . ‘.vip_activity_courtesy’)
->where(‘start_time’, ‘<=’, time())
->where(‘end_time’, ‘>’, time())
->where(‘start_money’, ‘<=’, $money)
->where(‘end_money’, ‘>=’, $money)
->where(‘activity_type’, ‘支付’)
->where(‘status’, 0)
->where(’(store_all = “” or store_all IS null)’)
->select();

感谢观看!如果喜欢,欢迎点赞👍
如果有什么不懂得?请在下方评论哦!

### 创建 ThinkPHP6 与 Vue 集成的登录页面 #### 后端设置 (ThinkPHP6) 为了构建一个完整的登录功能,首先需要配置后端API接口。假设已经在本地环境中搭建好了ThinkPHP6环境。 定义控制器 `app/controller/Login.php` 来处理用户的认证请求: ```php <?php namespace app\controller; use think\Controller; use think\Request; use think\facade\Db; // 数据库操作类 class Login extends Controller { public function login(Request $request){ if ($request->isPost()) { $data = input('post.'); // 这里可以加入更多的验证逻辑 try{ // 查询用户表中的记录 $result = Db::name('users')->where(['username' => $data['username'], 'password' => md5($data['password'])])->find(); if (!empty($result)) { return json([ "status" => true, "message" => "Login successful", "token" => "" // 可以返回JWT token 或者其他形式的身份令牌 ]); }else{ throw new \Exception("Invalid username or password"); } } catch (\Exception $e) { return json(["status"=>false,"message"=>$e->getMessage()]); } } return view(); // 渲染视图模板给前端调用 } } ``` 此部分实现了基本的用户名密码校验,并通过JSON响应告知客户端结果[^1]。 #### 前端实现 (Vue.js) 对于前端而言,则需利用Vue组件化特性来设计简洁直观的操作界面。下面给出简单的HTML结构加上对应的JavaScript脚本作为例子说明如何发起异步请求并显示反馈信息。 创建名为 `login.vue` 的单文件组件: ```html <template> <div class="login-container"> <h2>Login</h2> <!-- 表单 --> <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="Username" prop="username"> <el-input v-model="ruleForm.username"></el-input> </el-form-item> <el-form-item label="Password" prop="pass"> <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input> </el-form-item> <el-button @click.prevent="submitForm()">Submit</el-button> </el-form> {{ message }} </div> </template> <script> export default { data() { var validatePass = (rule, value, callback) => { if (value === '') { callback(new Error('Please enter your password')); } else { callback(); } }; return { ruleForm: { pass: '', username: '' }, rules: { pass: [ { validator: validatePass, trigger: 'blur' } ], username: [ { required: true, message: 'Please input activity name', trigger: 'blur' } ] }, message:'' }; }, methods:{ submitForm(){ this.$refs.ruleForm.validate((valid) => { if(valid){ axios.post('/index/login/login',{ ...this.ruleForm }).then(res=>{ console.log(res.data); if(res.data.status===true){ alert('success'); localStorage.setItem('token',res.data.token); // 存储Token到浏览器缓存中以便后续访问受保护资源时携带该凭证 window.location.href='/';// 跳转至首页或其他指定位置 }else{ this.message=res.data.message; } }) }else{ console.log('error submit!!'); return false; } }); } } }; </script> <style scoped> .login-container{width:40%;margin:auto;} .demo-ruleForm{text-align:center;padding-top:8%;} </style> ``` 上述代码片段展示了怎样借助Element UI框架快速建立美观实用的输入框布局;并通过axios发送POST请求向服务器提交数据完成身份验证过程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值