在laravel API控制器中创建过滤器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在laravel API控制器中创建过滤器相关的知识,希望对你有一定的参考价值。
嗨,我想创建一个过滤器来显示只有事件或活动的清真寺。有没有想过只展示活动或活动的清真寺?这个来自后端,后来将使用react进行获取
namespace AppHttpControllers;
use AppEvent;
use AppMosque;
use AppActivity;
use IlluminateHttpRequest;
class NotificationController extends Controller
{
public function list()
{
$mosques = Mosque::get();
$array = array();
foreach ($mosques as $mosque) {
array_push($array, [
'mosque_name' => $mosque->name,
'mosque_image'=> $mosque->image
]);
}
return $array;
return response()->json(['result' => $mosques]);
}
public function show(Request $request)
{
$mosque = Mosque::find($request->mosque_id);
$mosque->activities;
$mosque->events;
return response()->json(['result' => $mosque]);
}
}
答案
你可以试试这个
public function show(Request $request)
{
$mosque = Mosque::find($request->mosque_id);
$mosque->activities;
$mosque->events;
return response()->json(['result' => $mosque->events ]);
}
另一答案
要从具有特定关系的数据库中过滤行,可以在whereHas()
上使用QueryBuilder Instance
函数。
$mosques = Mosque::whereHas('events')
->orWhereHas('activities')
->get();
此函数只返回mosques which has activities or events
,其他mosques
将无法获取。
此外,如果你只需要name
和image
,你也可以过滤它们
$mosques = Mosque::whereHas('events')
->orWhereHas('activities')
->get(['name','image']);
以上是关于在laravel API控制器中创建过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 中创建 api 忘记密码和更改密码? [复制]