过滤器PHP中的Laravel或运算符

过滤器PHP中的Laravel或运算符,php,laravel,laravel-5,Php,Laravel,Laravel 5,我按照教程在我的网站上制作过滤器 我试图在HTML中的筛选器中添加OR语句 比如说, <a href="{{ route('rooms.index', ['type' => request('type'), 'sort' => request('sort'), 'region' => 'Lisbon'|'Lisboa', ]) }}">Lisbon</a> 都没有运气。 当“里斯本”和“里斯本”之间有一个逗号时,操作员似

我按照教程在我的网站上制作过滤器

我试图在HTML中的筛选器中添加OR语句

比如说,

<a href="{{ route('rooms.index',
    ['type' => request('type'),
    'sort' => request('sort'),
    'region' => 'Lisbon'|'Lisboa',
    ]) }}">Lisbon</a>
都没有运气。 当“里斯本”和“里斯本”之间有一个逗号时,操作员似乎只查看第一个选项,在本例中为“里斯本”

(如果你想知道,谷歌地图API为我提供了管理区的里斯本或里斯本,尽管我已经将其限制为英语。)

然后,对于我的控制器,以下是我如何执行过滤器:

  public function index()
    {
        $rooms = new Room;
        if (request()->has('type')) {
            $rooms = $rooms->where('type', request('type'));
        }
        if (request()->has('region')) {
            $rooms = $rooms->where('region', request('region'));
        }
        if (request()->has('sort')) {
            $rooms = $rooms->orderBy('created_at', request('sort'));
        }
        $rooms = $rooms->paginate(20)->appends([
          'type' => request('type'),
          'region' => request('region'),
          'sort' => request('sort'),
        ]);
        return view('rooms.index')->with('rooms', $rooms);
你知道这里有什么可能的解决办法吗


谢谢

Laravel集合包括一个
where()
方法来过滤数组<代码>其中()只接受一个值

因此,如果要将数据数组作为区域传递,可以执行以下操作:

$rooms = $rooms->whereIn('region', request('region'));
此外

'Lisbon | Lisboa'
字符串是字符串,而不是表达式。您不应该期望任何代码将其理解为两个独立的值。用括号括起来并不会改变任何事情,括号用来为操作提供顺序,就像在数学中一样

'Lisbon'|'Lisboa'
是一个按位操作,因为
是一个按位运算符,而不是您要查找的运算符
|
是一个OR运算符,但不能将表达式作为参数传递,只能传递该表达式计算出的值,如果使用
|
,该值为真或假

在处理值列表时,您几乎总是希望利用PHP数组和数组函数。它的基本功能是什么
为该过滤器供电。请务必理解数组并查看可用的函数。

您介绍的代码只是定义路由参数,与实际的数据过滤无关。True。谢谢@Devon,我将从我的控制器中添加内容。另外,我不确定您在
('Lisbon')|('Lisboa')
中尝试使用什么语法。这是一个字符串
Lisboo
。老实说,@Devon,我尝试了几种不同的方法,并在一路上编了一些。。。如果这是一次愚蠢的尝试,很抱歉。谢谢@Devon,但出于某种原因,我一直收到一个错误:(1/1)ErrorException为foreach()提供的无效参数听起来好像你没有传递数组你完全正确!很抱歉。所以,我就这样做了,结果是:'region'=>['Lisbon','Lisboa'],
$rooms = $rooms->whereIn('region', request('region'));