show user only those product which he hasn't buyed laravel eloquest
$user_id = auth()->user()->id;
Product::where('status', 'active')
->whereNotIn('id', function($query) use ($user_id) {
$query->select('product_id')->from(new OrderProduct->getTable())
->where('user_id', $user_id)->where('status', 'delivered')
->pluck('product_id')->toArray();
});