是否可以延迟加载模型属性。
用例是我有一个带有select语句的查询,并且可能是这样的情况,即返回的模型丢失了一个稍后需要的属性。
我知道将属性添加到select语句中是一个简单的解决方案,但也可能有人忘记这样做。
有没有办法强制它在使用时加载?否则,它将被视为值为null,这不是我在这里想要的。
我的理想场景就像关系延迟加载:
如果我没有加载/选择该列,它将触发一个单独的DB查询。我可以启用一个严格模式,如果发生这种情况,该模式将在开发期间抛出异常,因此我知道需要将其添加到select语句中。
1条答案
按热度按时间91zkwejq1#
一种解决方案是在
AppServiceProvider.php
中设置preventAccessingMissingAttributes
,如下所示:这将防止laravel在你试图访问一个不存在的属性时只返回
null
。它会抛出Illuminate\Database\Eloquent\MissingAttributeException
。通过这种方式,您可以在开发过程中轻松发现此类问题,并避免错误地认为属性是
null
的情况。