在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将无法获取。

此外,如果你只需要nameimage,你也可以过滤它们

$mosques = Mosque::whereHas('events')
    ->orWhereHas('activities')
    ->get(['name','image']);

以上是关于在laravel API控制器中创建过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.2 中创建多重身份验证

如何在 laravel 中创建 api 忘记密码和更改密码? [复制]

如何在控制器中创建目录 - laravel

如何在 Laravel 中创建 RESTful API 以在我的 BackboneJS 应用程序中使用

在 Laravel 中创建具有角色的用户时需要帮助

需要一种有效的方法来避免使用 Laravel 5 重复代码片段