Maison  >  Questions et réponses  >  le corps du texte

le modèle laravel empêche le chargement paresseux de lever une exception lors de l'utilisation de la relation "whenLoaded()" dans la ressource

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粉614840363P粉614840363311 Il y a quelques jours411

répondre à tous(1)je répondrai

  • P粉920835423

    P粉9208354232024-01-06 11:06:13

    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; });

    répondre
    0
  • Annulerrépondre