【问题标题】:Laravel RESTFUL Query String: Handling "OR" ConditionsLaravel RESTFUL 查询字符串:处理“OR”条件
【发布时间】:2015-02-16 13:54:36
【问题描述】:

例如,我有一个 Dog 资源,我想使用我正在创建的一些 RESTful API 来查询该资源。

我将如何生成并处理带有“OR”条件的查询。例如:

http://url/dogs/?color=brown|black

以上是请求所有棕色或黑色狗的有效 URL,我将如何使用 Laravel 处理这个问题?

【问题讨论】:

    标签: rest laravel


    【解决方案1】:

    这很简单。

    先使用Input::get()获取值再使用explode

    $color = Input::get('color');
    $colors = explode('|', $color);
    
    // results in array('brown', 'black');
    

    关于一般 URL 中的管道字符。它是有效的,但只是可能在某处引起问题。也许一个简单的连字符效果更好color=brown-black。虽然不得不承认,我更喜欢烟斗的样子……

    【讨论】:

    • 谢谢!我只是在谷歌上搜索了一下,是的,管道字符似乎不是一个好主意。鉴于您的回答确实解决了问题,这是否意味着 laravel 没有内置方法来处理查询字符串中的 OR 条件?这是其他 REST API 处理 OR 请求的方式吗?
    • AFAIK Laravel 无法做到这一点,如果有,我会感到非常惊讶。我见过许多不同的实现。绝对没有一种最好的方法。做你觉得对的事:)
    【解决方案2】:

    使用数组:

    http://url/dogs/?color[]=brown&color[]=black
    

    然后在你的代码中使用数组:

    $colors = Input::get('color');
    
    $dogs = Dog::whereIn('color', $colors)->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多