Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有搜索结果参数的路由laravel_Php_Laravel_Parameters_Routes - Fatal编程技术网

Php 带有搜索结果参数的路由laravel

Php 带有搜索结果参数的路由laravel,php,laravel,parameters,routes,Php,Laravel,Parameters,Routes,我有一个简单的事件列表,我从事件表中获取。我列出事件的视图有一个包含四个类别的侧栏。例如,我希望在单击某个类别时,访问路由“events?category=2”,并仅显示该类别中的事件 我创建了一个服务提供者,它为表提供数据库表“categories”中的类别,侧栏中的链接是 <a href="{{ route('searchByCategory', ['id' => $category->id] ) }}"> 事件控制器如下所示: public function ma

我有一个简单的事件列表,我从事件表中获取。我列出事件的视图有一个包含四个类别的侧栏。例如,我希望在单击某个类别时,访问路由“events?category=2”,并仅显示该类别中的事件

我创建了一个服务提供者,它为表提供数据库表“categories”中的类别,侧栏中的链接是

<a href="{{ route('searchByCategory', ['id' => $category->id] ) }}">
事件控制器如下所示:

public function mainList(Request $request){
    $events = Event::all();
    return view('pages.events', compact('events'));
}

public function searchEventByCategory(Request $request){
    $events = Event::where('category',$request->query('id'));
    return redirect()->route('events', compact('events'));
}
这不起作用,因为在“events”路由中调用控制器时,$events变量被重写,即使我将其作为参数传递给路由

我想不出任何办法来解决这个问题。我该怎么做呢

编辑 我在查询数据库时忘记添加get()方法,因此

$events = Event::where('category',$request->query('id'))->get();

您不应该重定向,只需返回相同的视图:

$events = Event::where('category', $request->id)->get();
return view('pages.events', compact('events'));

不要重定向到事件
路由
,而是从控制器返回
视图

public function mainList(Request $request){
    $events = Event::all();
    return view('pages.events', compact('events'));
}

public function searchEventByCategory(Request $request){
    $events = Event::where('category',$request->query('id'));
    return view('pages.events', compact('events'));
}
如果要对这两个事件使用相同的
/events
路由,请执行以下操作:

在侧边栏中:

<a href="{{ route('events', ['id' => $category->id] ) }}">
public function mainList(Request $request){
    if($request->has('id')){
        $events = Event::where('category',$request->get('id'));
    } else {
       $events = Event::all();
    }
    return view('pages.events', compact('events'));
}

这并不完全是我想要的,因为我希望通过相同的链接访问搜索结果,只使用参数。谢谢您的回复,因为我忘了将“get”方法添加到模型中。
public function mainList(Request $request){
    if($request->has('id')){
        $events = Event::where('category',$request->get('id'));
    } else {
       $events = Event::all();
    }
    return view('pages.events', compact('events'));
}