Bagaimana untuk Menyertai Tiga Jadual dalam Laravel untuk Suapan seperti Twitter?

DDD
Lepaskan: 2024-10-27 00:00:05
asal
754 orang telah melayarinya

How to Join Three Tables in Laravel for a Twitter-like Feed?

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

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

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!

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