Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Siaran daripada Pengguna yang Anda Ikuti dalam Rangkaian Sosial menggunakan Operasi Sertai Laravel?

Bagaimana untuk Mendapatkan Siaran daripada Pengguna yang Anda Ikuti dalam Rangkaian Sosial menggunakan Operasi Sertai Laravel?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 07:52:29498semak imbas

How to Retrieve Posts from Users You Follow in a Social Network using Laravel Join Operations?

Laravel Sertai dengan Tiga Jadual untuk Kefungsian Rangkaian Sosial

Dalam Laravel, apabila bekerja dengan berbilang jadual, adalah penting untuk memahami cara melaksanakan gabungan operasi dengan cekap. Dalam senario ini, kami menyasarkan untuk mendapatkan semula siaran daripada pengguna yang diikuti oleh pengguna tertentu.

Jadual Pangkalan Data

Kami mempunyai tiga jadual yang terlibat:

  • Pengguna: id
  • Pengikut: user_id, follower_id
  • Perkongsian: user_id

Pertanyaan Menggunakan Pertanyaan Pangkalan Data

Satu pilihan ialah menggunakan pembina pertanyaan pangkalan data Laravel. Begini cara anda boleh membina pertanyaan:

<code class="php">$shares = DB::table('shares')
    ->leftjoin('followers', 'shares.user_id', '=', 'followers.follower_id')
    ->leftjoin('users', 'followers.user_id', '=', 'users.id')
    ->where('users.id', 3)
    ->where('shares.user_id', 'followers.follower_id')
    ->get();</code>

Pendekatan Model

Sebagai alternatif, anda boleh menggunakan ORM Eloquent Laravel untuk pendekatan yang lebih berstruktur dan selamat jenis. Tentukan model untuk setiap jadual:

<code class="php">// User model
class User extends Model {
    public function shares() {
        return $this->hasMany('Share');
    }
    public function followers() {
        return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id');
    }
}

// Share model
class Share extends Model {
    public function user() {
        return $this->belongsTo('User');
    }
}</code>

Kemudian, anda boleh menggunakan pertanyaan berikut:

<code class="php">$my = User::find('my_id');

// Eager load the owner of the share
$shares = Share::with('user')
    ->join('follows', 'follows.user_id', '=', 'shares.user_id')
    ->where('follows.follower_id', '=', $my->id)
    ->get('shares.*');

foreach ($shares as $share) {
    echo $share->user->username;
}</code>

Pertanyaan ini mendapatkan semula semua perkongsian oleh pengguna yang anda ikuti dan dengan penuh semangat memuatkan pengguna yang berkongsi mereka.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Siaran daripada Pengguna yang Anda Ikuti dalam Rangkaian Sosial menggunakan Operasi Sertai Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn