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

Patricia Arquette
Lepaskan: 2024-10-25 07:52:29
asal
497 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!