Bagaimana Cara Menampilkan Data Berdasarkan Id di Laravel?

Dibuat
·
Dilihat40 kali
0

Saya punya dua tabel/model User dan Post di Laravel, dimana tabel Post berisi kolom user_id yang mengarah ke tabel User kolom id, setiap User bisa memiliki banyak Post.

Saya ingin mengambil semua postingan untuk user yang sedang login saat ini, sempat kepikiran ngambil post berdasarkan id user Auth::user()->id tapi saya masih bingung apa yang harus saya lakukan berikutnya, ini kode yang saya pakai:

class PostController extends Controller
{
    public function index(Request $request): View
    {
        $userId = Auth::user()->id;
        $posts = []; // bagaimana cara mendapatkan posts?
        return view('posts', [
            'posts' => [],
        ]);
    }
}
1 Jawaban
0

Ada beberapa cara.

Cara pertama, gunakan model Post untuk mencari semua postingan berdasarkan user_id yang sedang login seperti ini:

use App\Models\Post;

class PostController extends Controller
{
    public function index(Request $request): View
    {
        $userId = Auth::user()->id;
        $posts = Post::where('user_id', $userId)->get();
        return view('posts', [
            'posts' => $posts,
        ]);
    }
}

Cara kedua, tambahkan method (misalnya posts()) yang berelasi ke model User, seperti ini:

use Illuminate\Database\Eloquent\Relations\HasMany;

class User extends Authenticatable
{
	// ...

    public function posts(): HasMany
    {
        return $this->hasMany(Post::class);
    }
}

Di Controller kita bisa panggil method yang telah ditambahkan untuk mengambil posts yang dimiliki user yang sedang login, seperti ini:

class PostController extends Controller
{
    public function index(Request $request): View
    {
        $posts = Auth::user()->posts()->get();
        return view('posts', [
            'posts' => $posts,
        ]);
    }
}
Dibuat

Kamu tau jawabannya?

Ayo bergabung bersama lebih dari 200.000 pengguna lainnya!