【问题标题】:how to get opposite results from a query Laravel如何从查询 Laravel 中获得相反的结果
【发布时间】:2016-03-17 08:07:02
【问题描述】:

如何从 SELECT 查询中得到相反的结果

下面是我的查询

  $fod = FodMap::select('*')
        ->where('fructose_level', $fructose == 1 ? '=' : '>=', $fructose)
        ->where('lactose_level', $lactose == 1 ? '=' : '>=', $lactose)
        ->where('polyols_level', $polyols == 1 ? '=' : '>=', $polyols)
        ->where('fructan_level', $fructan == 1 ? '=' : '>=', $fructan)
        ->get();

我想获取不属于上述查询的所有内容。请指教

【问题讨论】:

  • 嗯,== 的反面是!=>= 的反面是<=。否则问题不清楚
  • 是的,但如果使用!=,它将始终是>= ;)
  • @DamienPirsy :上面的结果给出了用户不能吃的食物列表。我希望它得到与上面不匹配的结果,laravel 中有什么选项我不能放“ Wherere Not in' 在那些 Where 子句之上的那种声明

标签: php mysql laravel laravel-5


【解决方案1】:

要在 Laravel 中做否定声明,请使用 whereNotIn 表达式。

laravel.io

【讨论】:

  • 你确定这会起作用吗? OP 想要与整个查询相反的结果。
  • 根据他的评论,它应该完全符合需要。
  • 您能否发布确切的查询,以便 OP 尝试一下?不管它是否有效,这真的很有趣。
  • @AlexeyMezenin 让我们看看提问者要说什么。请查看提供的链接。与您不同(根据您的个人资料信息),我不是 Laravel 专家。 ;)
【解决方案2】:

好的,我考虑了你的问题一段时间,我认为解决方案并不像你最初问的那么复杂(当我第一次阅读时,我以为你想要反转结果)。

  1. 在您的一个 cmets 中,您写道:

上面的结果给出了用户不能吃的食物列表。我是什么 希望它得到与上面不匹配的结果

  1. 我读过有关果糖水平等的信息。简而言之,高于 1 的水平是不好的,低于 1 是好的。

那么,解决方案太简单了:

$fod = FodMap::select('*')
        ->where('fructose_level', '<', $fructose)
        ->where('lactose_level', '<', $lactose)
        ->where('polyols_level', '<', $polyols)
        ->where('fructan_level', '<', $fructan)
        ->get();

此外,原始查询中的三元运算符没有意义,因为子句如下:

->where('fructose_level', $fructose == 1 ? '=' : '>=', $fructose)

将始终作为:

->where('fructose_level', '>=', $fructose)

想一想。

【讨论】:

    猜你喜欢
    • 2012-11-10
    • 1970-01-01
    • 2016-12-15
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多