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(); } }
<?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'); } }
// 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; }
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!