【问题标题】:Undefined offset: 1 in CompilesLoops.php laravel 5未定义的偏移量:CompilesLoops.php laravel 5 中的 1
【发布时间】:2018-07-27 01:16:30
【问题描述】:

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

这里有两张桌子- 1.服务表

2.子服务表

【问题讨论】:

  • waht 是错误,你能发帖吗
  • 未定义的偏移量:CompilesLoops.php 中的 1(第 95 行)

标签: php mysql laravel eloquent nested-loops


【解决方案1】:

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

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

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

【讨论】:

  • 一次获取所有“子服务”列表。我只想显示哪个服务有相关的子服务。
  • @RashedHasan 它与原始问题无关。如果它解决了您遇到的错误,您应该接受答案,如果您无法自己解决新问题,请创建一个新问题。
【解决方案2】:

在刀片文件中编写逻辑部分是一种不好的方式。我建议您将其移动到控制器,因为如果您需要更改代码,您必须编辑刀片页面。以及请利用关系为了获取数据,您可以将您的服务与子服务相关联 例如 Service.php(模型文件)

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

SubService.php(模型文件)

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

你的刀片代码:

 @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

【讨论】:

    【解决方案3】:

    当您没有正确关闭循环时也会发生此错误。

    使用@foreach() 启动一个循环,使用@endforeach 关闭同一个循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 2016-10-30
      • 1970-01-01
      • 2013-01-25
      • 2022-01-02
      相关资源
      最近更新 更多