我有以下型号:
TourCategory.php [hasMany('App \ Tour','category_id');]
执行以下任务的代码段:
以一种偶然的方式找到旅游类别。
从这些旅行中获取所有唯一的地区名称。
public function fetchByCategory($slug)
{
$category = TourCategory::where('slug','=', $slug)->first();
$tours = $category->tours()->with('region')->get(['region_id']);
$regions = $tours->pluck('region')->unique();
return view('frontend.pages.travel-style')
->withResults($regions)
->withCategory($category);
}
但是我创建的某些游览没有区域。在没有区域存储的情况下,默认情况下会设置空值。
这导致我的应用崩溃,因为我以下列方式在视图中打印数据:
@foreach($results as $region)
<div class="uk-width-1-2@s">
<a href="{{ route('region2package',[$category->slug,$region->slug]) }}">
<div class="uk-height-medium uk-flex uk-flex-center uk-flex-middle uk-background-cover uk-light" data-src="{{ asset($region->thumb) }}" uk-img>
</a>
<h3><a href="{{ route('region2package',[$category->slug,$region->slug]) }}">{{ $region->name }}</a></h3>
</div>
</div>
@endforeach
dd($tours->count());
并使其死亡时,当DB中仅保存了一个没有区域的游览时,它将返回1
我做dd($regions);
时会给出以下信息:
Collection {#570 ▼
#items: array:1 [▼
0 => null
]
}
如果有人能提出检查集合中项目是否包含空值的最佳方法,我将非常感谢!
答案 0 :(得分:1)
我建议您在has
关系上使用tours
方法,只获得region exists
处的结果,如下所示:
$tours = $category->tours()->has('region')->with('region')->get(['region_id']);
答案 1 :(得分:0)
可以从集合中查找空值,而不是从集合中查找空值。
$regions = $tours->pluck('region')->unique()->filter();