Rumah > pembangunan bahagian belakang > tutorial php > Pertanyaan hubungan fasih di laravel dengan whererelation

Pertanyaan hubungan fasih di laravel dengan whererelation

Robert Michael Kim
Lepaskan: 2025-03-05 16:17:17
asal
362 orang telah melayarinya

Eloquent Relationship Queries in Laravel with whereRelation

Kaedah whereRelation Pertimbangkan contoh ringkas ini:

ini mengambil semula semua
Post::whereRelation('comments', 'is_approved', true)->get();
Salin selepas log masuk
model di mana sekurang -kurangnya satu yang berkaitan

mempunyai Post ditetapkan ke comment. is_approved true mari kita ilustrasikan dengan sistem penapisan kursus:

Kaedah pengawal ini menunjukkan cara membina penapis dinamik. SQL yang dihasilkan sangat cekap, mengendalikan keadaan hubungan dengan berkesan. Contohnya:
<?php namespace App\Http\Controllers;

use App\Models\Course;
use Illuminate\Http\Request;

class CourseController extends Controller
{
    public function browse(Request $request)
    {
        $courses = Course::query();

        // Filter by instructor rating
        if ($request->has('top_rated')) {
            $courses->whereRelation('instructor', 'rating', '>=', 4.5);
        }

        // Filter by recent student reviews
        if ($request->has('well_reviewed')) {
            $courses->orWhereRelation('reviews', 'created_at', '>=', now()->subDays(30));
        }

        // Filter by active discussion
        if ($request->has('active_discussion')) {
            $courses->whereRelation('discussions', 'last_activity', '>=', now()->subDays(7));
        }

        return $courses->with(['instructor', 'reviews'])->latest()->paginate();
    }
}
Salin selepas log masuk

Secara ringkas,
// Filters courses with:
// - Highly rated instructors (4.5+)
// - OR recent reviews (within the last 30 days)
// - AND active discussions (within the last 7 days)
$courses = Course::whereRelation('instructor', 'rating', '>=', 4.5)
    ->orWhereRelation('reviews', 'created_at', '>=', now()->subDays(30))
    ->whereRelation('discussions', 'last_activity', '>=', now()->subDays(7))
    ->get();
Salin selepas log masuk
menawarkan kaedah yang jelas dan ekspresif untuk penapisan model berdasarkan atribut hubungan, menghasilkan aplikasi Laravel yang lebih bersih dan lebih diselenggara.

Atas ialah kandungan terperinci Pertanyaan hubungan fasih di laravel dengan whererelation. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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