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

Pertanyaan hubungan fasih di laravel dengan whererelation

Robert Michael Kim
Robert Michael Kimasal
2025-03-05 16:17:17363semak imbas

Eloquent Relationship Queries in Laravel with whereRelation

Kaedah whereRelation Pertimbangkan contoh ringkas ini:

ini mengambil semula semua
Post::whereRelation('comments', 'is_approved', true)->get();
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();
    }
}

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();
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:
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