PostsController.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Post;
  5. use Intervention\Image\Facades\Image;
  6. class PostsController extends Controller
  7. {
  8. public function __construct()
  9. {
  10. $this->middleware('auth');
  11. }
  12. public function index()
  13. {
  14. $users = auth()->user()->following()->pluck('profiles.user_id');
  15. $posts = Post::whereIn('user_id', $users)->with('user')->latest()->get();
  16. return view('posts.index', compact('posts'));
  17. }
  18. public function create()
  19. {
  20. return view('posts.create');
  21. }
  22. public function store()
  23. {
  24. $data = request()->validate([
  25. 'caption' => 'required',
  26. 'image' => ['required', 'image'],
  27. ]);
  28. $imagePath = request('image')->store('uploads', 'public');
  29. $image = Image::make(public_path("storage/{$imagePath}"))->fit(1200, 1200);
  30. $image->save();
  31. auth()->user()->posts()->create([
  32. 'caption' => $data['caption'],
  33. 'image' => $imagePath,
  34. ]);
  35. return redirect('/profile/' . auth()->user()->id);
  36. }
  37. public function show(Post $post)
  38. {
  39. return view('posts.show', compact('post'));
  40. }
  41. }