如何在满足某些条件的 Where Clause 上获得结果?
How to get result on Where Clause satisfied some condition?
我正在使用 MySQL 数据库 table scholarship_discount。我有三个字段,它们是 maxPercentage、min Percentage 和 name。因此,如果所有字段都满足我的条件,我想 运行 获取行的查询。我正在使用 Laravel 5.6 框架。问题是当我 运行 将此查询输入 MySql Workbench 然后得到正确的结果但是当尝试通过 Laravel 然后出错结果。
问题示例::
如果我给 user value as 78 那么我得到 row id 5 ,否则 96 然后 row 是 1.ok 没问题。使用 mysql workbench.
但是当我给出 98 ,96,97,99 时,我没有得到任何结果。为什么?我不知道。没有删除任何记录。我的意思是它应该是 return row id 1 但给了我 blank 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 应该大于 user Value。
我的数据库记录是:
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
所以,根据这个 table 如果我给 95 作为值,那么查询应该 return row id 1.
所以如果 Laravel eloquent 上有可用的解决方案就更好了,请描述一下。
我可以过滤或搜索 maxPercentage { value } minPercentage 之间的行吗?
喜欢
75 myValue 70
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();
我已经自己解决了我的问题。实际上我在 table 字段上做错了。我选择了错误的字段来与我的输入进行比较值。
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();
我用 is 解决方案检查了我的情况,每次我都得到了我的结果。
我正在使用 MySQL 数据库 table scholarship_discount。我有三个字段,它们是 maxPercentage、min Percentage 和 name。因此,如果所有字段都满足我的条件,我想 运行 获取行的查询。我正在使用 Laravel 5.6 框架。问题是当我 运行 将此查询输入 MySql Workbench 然后得到正确的结果但是当尝试通过 Laravel 然后出错结果。
问题示例::
如果我给 user value as 78 那么我得到 row id 5 ,否则 96 然后 row 是 1.ok 没问题。使用 mysql workbench.
但是当我给出 98 ,96,97,99 时,我没有得到任何结果。为什么?我不知道。没有删除任何记录。我的意思是它应该是 return row id 1 但给了我 blank 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 应该大于 user Value。 我的数据库记录是:
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
所以,根据这个 table 如果我给 95 作为值,那么查询应该 return row id 1.
所以如果 Laravel eloquent 上有可用的解决方案就更好了,请描述一下。
我可以过滤或搜索 maxPercentage { value } minPercentage 之间的行吗?
喜欢
75 myValue 70
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();
我已经自己解决了我的问题。实际上我在 table 字段上做错了。我选择了错误的字段来与我的输入进行比较值。
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();
我用 is 解决方案检查了我的情况,每次我都得到了我的结果。