Php 检查集合中的值是否为空值

Php 检查集合中的值是否为空值,php,laravel,laravel-5.7,Php,Laravel,Laravel 5.7,我有以下型号: Tour.php[belongsTo('App\Region')、belongsTo('App\TourCategory')] Region.php[hasMany('App\Tour');] TourCategory.php[hasMany('App\Tour','category_id');] 以及执行以下任务的代码段: 通过slug查找旅游类别 获得具有该特定类别的旅游 从这些旅行中获取所有唯一的地区名称 public function fetchByCategory(

我有以下型号:

  • Tour.php[belongsTo('App\Region')、belongsTo('App\TourCategory')]
  • Region.php[hasMany('App\Tour');]
  • TourCategory.php[hasMany('App\Tour','category_id');]

    以及执行以下任务的代码段:

  • 通过slug查找旅游类别

  • 获得具有该特定类别的旅游
  • 从这些旅行中获取所有唯一的地区名称

      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
    

    如果有人能建议最好的方法来检查集合中的项目是否包含空值,我将不胜感激。

    您可以筛选集合,从而自动从集合中删除空值,而不是从集合中查找空值

    $regions = $tours->pluck('region')->unique()->filter();
    

    我建议您在
    tours
    关系上使用
    has
    方法,仅在
    区域存在的地方获得结果,如下所示:

    $tours = $category->tours()->has('region')->with('region')->get(['region_id']);
    
    $tours = $category->tours()->has('region')->with('region')->get(['region_id']);