如何从查询Laravel

时间:2016-03-17 08:07:02

标签: php mysql laravel laravel-5

如何从 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();

我希望获得不属于上述查询的所有内容。请咨询

2 个答案:

答案 0 :(得分:0)

在Laravel中使用whereNotIn表达式进行否定陈述。

laravel.io

答案 1 :(得分:0)

好的,我想了一段时间你的问题,我认为解决方案并不像你先问的那样复杂(当我第一次看到它时,我以为你想要反转的结果)。

  1. 您在其中一条评论中写道:
  2.   

    以上结果给出了用户不能吃的食物清单..我是什么   希望它得到上面不匹配的结果

    1. 我读过关于果糖水平等等。简而言之,高于1的水平是坏的,不到1级是好的。
    2. 所以,解决方案太简单了:

      $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)
      

      想一想。