>和latestOfMany()
的方法,用於有效檢索關係中最新或最古老的相關模型。 這簡化了否則需要復雜排序和過濾的查詢。 oldestOfMany()
>
考慮一個方案跟踪用戶登錄和購買:
這是一個更全面的示例,用於管理客戶互動,購買和訂閱:
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; }方法通過將復雜的查詢邏輯封裝在關係定義中。
以上是Laravel中的最新和最古老的關係方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!