Rumah >pembangunan bahagian belakang >tutorial php >Kaedah hubungan terkini dan tertua di Laravel
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()
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!