Создать фильтр в контроллере API laravel - PullRequest
0 голосов
/ 03 октября 2018

Привет, я хочу создать фильтр для отображения мечети только с событием или деятельностью.Любая идея показать мечеть только с мероприятиями или событиями?Этот от back-end, который позже будет получен с использованием реакции

namespace App\Http\Controllers;

use App\Event;
use App\Mosque;
use App\Activity;
use Illuminate\Http\Request;

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]);
    }
}

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Чтобы отфильтровать строки из базы данных, которая имеет определенную связь, вы можете использовать функцию whereHas() для QueryBuilder Instance.

$mosques = Mosque::whereHas('events')
    ->orWhereHas('activities')
    ->get();

Эта функция вернет только mosques which has activities or events, другие mosques не будутfetch.

Также, если вам нужны только name и image, вы также можете отфильтровать их

$mosques = Mosque::whereHas('events')
    ->orWhereHas('activities')
    ->get(['name','image']);
0 голосов
/ 03 октября 2018

Вы можете попробовать это

  public function show(Request $request)
      {
         $mosque =  Mosque::find($request->mosque_id);
          $mosque->activities;
           $mosque->events;
         return response()->json(['result' => $mosque->events ]);
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...