过滤器PHP中的Laravel或运算符
我按照教程在我的网站上制作过滤器 我试图在HTML中的筛选器中添加OR语句 比如说,过滤器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> 都没有运气。 当“里斯本”和“里斯本”之间有一个逗号时,操作员似
<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'));