laravel 模型防止延迟加载在资源中使用“whenLoaded()”关系时抛出异常
P粉614840363
P粉614840363 2024-01-05 21:36:19
[PHP讨论组]

我最近开始使用 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; });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号