Home > Enterprise >  How can I modify my Controller so that the query is limited to the user id?
How can I modify my Controller so that the query is limited to the user id?

Time:04-12

I have my Controller set up as such:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Booking;

class eventController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $events = array();
        $bookings = Booking::all();
        foreach($bookings as $booking) {
                'id' => $booking->id,
                'title' => $booking->title,
                'resourceId' => $booking->resourceId,
                'start' => $booking->start_date,
                'end' => $booking->end_date,
            ];
        }
        return view('home', ['events' => $events]);
    }
}

Here I can pass everything from my DB into my view, but how can I filter these out such that only entries from a certain user_id is displayed? This is what my table looks like: https://imgur.com/AUZhA1L.

I have attempted to use the {user} blade but am stuck.

CodePudding user response:

Change this line:

$bookings = Booking::all();

to this:

$bookings = Booking::where('user_id', 9)->get();

Or if you want to get the logged in user, you can use Auth.

Add this line after use App\Models\Booking;

use Illuminate\Support\Facades\Auth;

and then:

$bookings = Booking::where('user_id', Auth::id())->get();

CodePudding user response:

In your User model add the following function (a user may have many bookings)

 public function bookings(){
return $this->hasMany(Booking::class);
}

Get the logged in user by calling Auth::user(); like

 $user=Auth::user();$bookings=$user->bookings();
  • Related