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();