繁体   English   中英

如何获得Where子句满足某些条件的结果?

[英]How to get result on Where Clause satisfied some condition?

我正在使用MySQL数据库表scholarship_discount 我有三个字段是maxPercentage,min百分比和名称 因此,如果所有字段满足我的条件,我想运行查询以获取行。 我正在使用Laravel 5.6 Framework。 问题是当我将此查询运行到MySql Workbench然后获得正确的结果但是当尝试通过Laravel然后得到错误的结果。

问题示例::

如果我给用户值为78然后我得到行id 5 ,否则96然后行是1 .ok没问题。 使用mysql工作台

但是当我给出98,96,97,99然后我没有结果。 为什么? 我不知道。 没有删除任何记录。 我的意思是它应该返回行id 1但是给我空白的Array []。

我的查询是:

SELECT * FROM confidence.scholarship_discounts where name='ssc' and 
 (maxPer >= 100 or  maxPer = 100 ) and `scholarship_discounts`.`deleted_at` is null 
 order by id DESC; 

我的搜索条件是MaxPercentage应该大于用户值 我的数据库记录是:

id    name      maxPercentage   minPercentage    discountPercentage
1     HSC           100            95                 10
2     HSC           95             90                  7
3     HSC           90             85                  6
4     HSC           85             80                  5
5     HSC           80             75                  10
6     HSC           75             70                  7
7     HSC           60             50                  6  

因此,根据此表,如果我将95作为值,则查询应返回行ID 1。

因此,如果Laravel上提供的解决方案雄辩,那么请更好地描述一下。
我可以在maxPercentage {value} minPercentage之间过滤或搜索行。 喜欢

75 myValue 70

我已经解决了自己的问题。 实际上我对表字段做错了。 我选择了错误的字段来比较我的输入值。

ScholarshipDiscount::where( 'name' ,'ssc' )
  ->where( function( $q ) use ( $request ) {
      $q-> where('minPer' ,'<=', $request->ssc );
      $q->  orWhere('minPer' , $request->ssc );
      $q->  orWhere('maxPer' , $request->ssc );
  } )->orderBy('id','asc')->first();

我检查了我的状况是解决方案,每次我得到我的结果。

where maxPercentage <= 90 - 这意味着最大百分比必须等于或大于90% 如果您将此值更改为95然后是,则仅返回id = 1的行

minPercentage >= 90 - 表示最小的持续时间必须少于90%

如果这不是您要求的,请进一步详细说明。 您选择这样做的方法可能是最有效的方法,如果不是最简单的方法。

试试这个代码

return $data = ScholarshipDiscount::where(function($q) use ($request){
               return $q->where('maxPercentage' ,'>=', $request->value)
                        ->orWhere('maxPercentage',$request->value);
                })->orderBy('id','desc')->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM