Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Tiga Jadual dalam Laravel untuk Suapan seperti Twitter?
Laravel Sertai dengan 3 Jadual
Untuk menyertai tiga jadual dalam Laravel untuk suapan seperti Twitter, pertanyaan gabungan boleh dibina seperti berikut :
$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();
Pertanyaan ini menyertai jadual perkongsian, pengguna dan pengikut berdasarkan syarat yang dinyatakan dalam klausa gabungan.
Pendekatan lain ialah menggunakan model dan bukannya pertanyaan mentah untuk lebih pendekatan berorientasikan objek. Berikut ialah contoh menggunakan model:
// Define 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'); } public function followees() { return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id'); } } // Define Share Model class Share extends Model { public function user() { return $this->belongsTo('User'); } } // Model Usage $my = User::find('my_id'); $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; }
Dengan menggunakan pendekatan model ini, anda boleh mendapatkan semula semua perkongsian daripada pengguna yang diikuti oleh pengguna log masuk, dengan bersemangat memuatkan pengguna yang mencipta bahagian itu.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Tiga Jadual dalam Laravel untuk Suapan seperti Twitter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!