Rumah > pembangunan bahagian belakang > tutorial php > Memuatkan hubungan dinamik di Laravel

Memuatkan hubungan dinamik di Laravel

Karen Carpenter
Lepaskan: 2025-03-05 15:47:18
asal
854 orang telah melayarinya

Dynamic Relationship Loading in Laravel

Kaedah loadmenting Laravel menyediakan cara yang fleksibel untuk hubungan beban yang bersemangat pada model atau koleksi sedia ada. Pendekatan ini menghalang masalah pertanyaan n 1 sambil membolehkan anda memuatkan hubungan hanya apabila perlu.

Ciri ini sangat berharga apabila membina API dengan pilihan termasuk atau papan pemuka di mana bahagian yang berbeza memerlukan data hubungan yang berbeza.

<!-- Syntax highlighted by torchlight.dev -->$post->loadMissing(['comments', 'author']);
// With constraints
$post->loadMissing(['comments' => function($query) {
    $query->latest()->take(5);
}]);
Salin selepas log masuk

Berikut adalah contoh pemuat data papan pemuka:

<!-- Syntax highlighted by torchlight.dev --><?php

namespace App\Http\Controllers;

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

class DashboardController extends Controller
{
    public function show(Request $request, Dashboard $dashboard)
    {
        // Load base relationships
        $dashboard->loadMissing([
            'widgets',
            'owner',
        ]);

        // Conditionally load additional data
        if ($request->section === 'analytics') {
            $dashboard->loadMissing([
                'widgets.viewHistory' => function($query) {
                    $query->whereBetween('viewed_at', [
                        now()->subDays(30),
                        now()
                    ]);
                },
                'widgets.interactions'
            ]);
        }

        if ($request->section === 'sharing') {
            $dashboard->loadMissing([
                'sharedUsers',
                'shareLinks' => function($query) {
                    $query->where('expires_at', '>', now());
                }
            ]);
        }
        return $dashboard;
    }
}
Salin selepas log masuk

Kaedah Loadmissing dengan bijak hanya memuatkan hubungan yang diperlukan:

<!-- Syntax highlighted by torchlight.dev -->// GET /dashboard/1?section=analytics
{
    "id": 1,
    "name": "Sales Overview",
    "widgets": [
        {
            "id": 1,
            "type": "chart",
            "viewHistory": [
                {
                    "viewed_at": "2024-02-01T10:30:00Z",
                    "views": 150
                }
            ],
            "interactions": [
                {
                    "type": "filter_change",
                    "timestamp": "2024-02-01T11:20:00Z"
                }
            ]
        }
    ]
}
Salin selepas log masuk

Loadmissing menyediakan cara yang efisien untuk menguruskan pemuatan hubungan, mengoptimumkan pertanyaan pangkalan data sambil mengekalkan fleksibiliti kod.

Atas ialah kandungan terperinci Memuatkan hubungan dinamik di Laravel. 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