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:
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!