未定义的偏移量:1 in CompilesLoops.php laravel 5

Undefined offset: 1 in CompilesLoops.php laravel 5

我有一个服务列表。现在我想将子服务添加到服务列表中。我有两个 tables 'services' 和 'sub-services' 外键约束 'service_id'。现在,我想在 master.blade.php 中显示 'services' 和相关的 'sub-services'。对于服务,它工作正常,但是,当尝试使用子服务时出现此错误。请有人帮助获得预期的结果。 在master.blade.php-

<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> Services</a>
      <ul class="dropdown-menu services-dropdown" role="menu">
         @forelse(App\Model\Service::all() as $service)
           <li class="dropdown-submenu">
              <a href="{{ url('services/'.$service->slug) }}">{{ $service->title }}</a>
                 <ul class="dropdown-menu sub-services">
                   @foreach(App\Model\SubService::where('service_id', '=',$service->id)->get()) as $subservice)
                     <li>
                       <a href="{{ url('sub-services/'.$subservice->slug) }}">{{ $subservice->title }}</a>
                     </li>
                   @endforeach
                  </ul>
           </li>
         @empty

         @endforelse
      </ul>
</li>

这里有两个 table- 1.Services table

2.Sub-服务table

您使用了错误的语法。您在 get() 附近使用了多余的 ),因此将其更改为:

@foreach(App\Model\SubService::where('service_id', $service->id)->get() as $subservice)

此外,正如我在我的最佳实践回购协议中所说,you shouldn't execute queries in a Blade template。考虑将逻辑移至控制器。

在 blade 中编写逻辑部分是一种糟糕的方法 file.I 建议您将其移至控制器,因为如果您需要更改代码,则必须编辑 blade page.As 以及请利用关系来获取数据,您可以将您的服务与子服务相关联 例如 Service.php(模型文件)

 public function subServices()
    {
        return $this->hasMany('App\SubService');
    }

SubService.php(模型文件)

public function services()
    {
        return $this->belongsTo('App\Service','service_id');
    }

您的blade代码:

 @forelse(App\Model\Service::all() as $service)
        <li class="dropdown-submenu">
            <a href="{{ url('services/'.$service->slug) }}">{{ $service->title }}</a>
                <ul class="dropdown-menu sub-services">
                    @foreach($service->subServices as $subservice)
                        <li>
                            <a href="{{ url('sub-services/'.$subservice->slug) }}">{{ $subservice->title }}</a>
                        </li>
                    @endforeach
                </ul>
            </li>
        @empty

    @endforelse

如果您没有正确关闭循环,也会发生此错误。

使用 @foreach() 开始循环,使用 @endforeach 结束相同的循环。