laravel - 如果数据不存在,如何跳过关系?
问题描述
我有一个Event
和一个Invitation
模型,它们之间有一个关系:一个活动可以有很多邀请。
我试图只显示有邀请的事件,如果没有,就跳过这个事件。
我的Event
模型:
class Event extends Model
{
public function invitations()
{
return $this->hasMany(Invitation::class, 'event_id') ?? [];
}
我试着用?? []
如果关系不存在,
这是我的看法:
@if ($event->invitations != null)
@foreach ($event->invitations as $event)
<h5>{{ $event->email }}</h5>
@endforeach
@else
<h5>Not Found</h5>
@endif
它没有通过else
声明。
当不存在时,我应该如何编写它以进入else
语句?$event->invitations
解决方案
该invitations()
方法的返回结果是一个集合,所以当你这样做时$event->invitations != null
,它始终是true
,即使没有特定事件的邀请(空集合与 不同null
)。
我宁愿建议您根据您的情况检查集合的大小:
@if ($event->invitations->count())
@foreach ($event->invitations as $event)
<h5>{{ $event->email }}</h5>
@endforeach
@else
<h5>Not Found</h5>
@endif
或者,捷径一:
@empty ($event->invitations)
<h5>Not Found</h5>
@else
@foreach ($event->invitations as $event)
<h5>{{ $event->email }}</h5>
@endforeach
@endempty
甚至最短:
@forelse ($event->invitations as $event)
<h5>{{ $event->email }}</h5>
@empty
<h5>Not Found</h5>
@endforelse
推荐阅读
- excel - 找到一个范围,然后在另一个公式中实现它
- java - java数据库连接与OOP
- kotlin - 如何在 Kotlin 中向 StringBuilder 追加新行
- android - 如何使用异步任务来控制视图寻呼机
- python - 使用 python 正则表达式从字符串中提取数据的更好方法
- python - 使用 Python 连接到 Redis 集群(在 Docker 中)
- java - 如何在 Spring Boot 中使用一个代码库维护多客户端自定义更改?
- python - PySpark:TypeError:“str”对象在数据帧操作中不可调用
- regex - apache 条件正则表达式无法匹配
- pkcs#11 - 如果派生密钥 CKA_DERIVE=0,C_DeriveKey 的正确错误代码是什么