Laravel 8判断littlelink_pixiv字段为空展示内容时报null错误如何解决
问题解决方案
错误根因
Call to a member function isEmpty() on null报错的核心原因是$info->littlelink_pixiv的值为null,而isEmpty()是Laravel集合/对象的内置方法,无法在null类型的值上直接调用。
适配不同场景的修复方案
场景1:
littlelink_pixiv为普通字符串/数值字段
直接判断字段值非空即可,不需要调用isEmpty()方法,推荐使用Laravel自带的filled()方法判断非空,或者用PHP null安全操作符避免变量不存在的报错:@if(filled($info?->littlelink_pixiv)) <section> <main class="card__wrapper"> </main> </section> @endif场景2:
littlelink_pixiv为关联关系返回的集合类型
用null安全操作符或者optional()辅助函数包裹调用,避免关联值为null时调用方法报错:{{-- 写法1:PHP 8+ 支持的null安全操作符 --}} @if($info?->littlelink_pixiv?->isNotEmpty()) <section> <main class="card__wrapper"> </main> </section> @endif {{-- 写法2:兼容低版本PHP的optional写法 --}} @if(optional($info->littlelink_pixiv)->isNotEmpty()) <section> <main class="card__wrapper"> </main> </section> @endif可选优化:封装访问器简化调用
如果多处需要判断该字段是否非空,可以在User模型中封装访问器统一逻辑:// app/Models/User.php public function getHasPixivAttribute(): bool { // 字符串字段用这个 return filled($this->attributes['littlelink_pixiv'] ?? null); // 集合关联用这个 // return optional($this->littlelink_pixiv)->isNotEmpty() ?? false; }后续Blade视图中可以直接简化为:
@if($info->has_pixiv) <section> <main class="card__wrapper"> </main> </section> @endif
内容的提问来源于stack exchange,提问作者TravelWhere
相关产品推荐
相关产品推荐

