laravel 模型防止延遲載入在資源中使用「whenLoaded()」關係時拋出異常
P粉614840363
P粉614840363 2024-01-05 21:36:19
0
1
530

我最近開始使用 Model::preventLazyLoading() 但即使關係未加載但有時可能會加載,它實際上也會引發錯誤

像資源 'discount' => $this->whenLoaded('meta', $this->meta->discount ?? 0),

#

laravel版本:9.17.0

#
P粉614840363
P粉614840363

全部回覆(1)
P粉920835423

PHP 在此解析您的語法。無論如何,它都必須載入$this->meta,因為當PHP 解析您的程式碼時,它優先於whenLoaded() 方法.

$this->whenLoaded('meta', $this->meta->discount ?? 0)

這就是為什麼 whenLoaded() 可以採用 closure() 來避免載入關係,除非它們實際上已載入。此方法將在滿足 whenLoaded() 條件後首先評估閉包。

$this->whenLoaded('meta', function () { return $this->meta->discount ?? 0; });
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板