le modèle laravel empêche le chargement paresseux de lever une exception lors de l'utilisation de la relation "whenLoaded()" dans la ressource
P粉614840363
P粉614840363 2024-01-05 21:36:19
0
1
429

J'ai récemment commencé à utiliser Model::preventLazyLoading() Mais même si la relation ne se charge pas, mais parfois cela peut l'être, cela génère en fait une erreur

J'aime les ressources 'discount' => $this->whenLoaded('meta', $this->meta->discount ?? 0),

version laravel : 9.17.0

P粉614840363
P粉614840363

répondre à tous(1)
P粉920835423

Laissez PHP 在此处解析您的语法。无论如何,它都必须加载 $this->meta,因为当 PHP 解析您的代码时,它优先于 whenLoaded() méthode.

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

C'est pourquoi whenLoaded() 可以采用 closure() 来避免加载关系,除非它们实际上已加载。此方法将在满足 whenLoaded() la fermeture est évaluée en premier après l'état.

$this->whenLoaded('meta', function () { return $this->meta->discount ?? 0; });
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal