Rumah >pembangunan bahagian belakang >tutorial php >Kaedah hubungan terkini dan tertua di Laravel

Kaedah hubungan terkini dan tertua di Laravel

百草
百草asal
2025-03-05 15:49:13594semak imbas

Latest and Oldest Relationship Methods in Laravel

Laravel's Eloquent Orm menyediakan kaedah

dan latestOfMany() yang mudah untuk mendapatkan semula model yang paling terkini atau tertua dalam hubungan. Ini memudahkan pertanyaan yang memerlukan penyortiran dan penapisan yang kompleks. oldestOfMany()

Kaedah ini amat berguna dalam aplikasi yang perlu mengesan data sejarah, memaparkan aktiviti baru -baru ini, atau mengenal pasti peristiwa awal.

Pertimbangkan senario pengesanan log masuk dan pembelian pengguna:

class User extends Model
{
    public function lastLogin(): HasOne
    {
        return $this->hasOne(Login::class)->latestOfMany();
    }

    public function firstPurchase(): HasOne
    {
        return $this->hasOne(Purchase::class)->oldestOfMany();
    }
}
Berikut adalah contoh yang lebih komprehensif menguruskan interaksi pelanggan, pembelian, dan langganan:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

class Customer extends Model
{
    public function lastInteraction(): HasOne
    {
        return $this->hasOne(Interaction::class)->latestOfMany();
    }

    public function largestPurchase(): HasOne
    {
        return $this->hasOne(Purchase::class)->ofMany('total_amount', 'max');
    }

    public function initialSubscription(): HasOne
    {
        return $this->hasOne(Subscription::class)->oldestOfMany('started_at');
    }

    public function activeMembership(): HasOne
    {
        return $this->hasOne(Membership::class)->latestOfMany()->where('status', 'active');
    }
}
Mengakses data ini adalah mudah:

// Retrieve customers with related data
$customers = Customer::with([
    'lastInteraction',
    'largestPurchase',
    'initialSubscription',
    'activeMembership'
])->get();

// Access relationship attributes
foreach ($customers as $customer) {
    echo "Last Contact: " . $customer->lastInteraction->created_at . PHP_EOL;
    echo "Largest Purchase: $" . $customer->largestPurchase->total_amount . PHP_EOL;
}
kaedah

dan latestOfMany() dengan ketara meningkatkan kebolehbacaan dan kebolehkerjaan kod dengan merangkumi logik pertanyaan kompleks dalam definisi hubungan. oldestOfMany()

Atas ialah kandungan terperinci Kaedah hubungan terkini dan tertua di Laravel. 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