未定义的偏移量: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
结束相同的循环。
我有一个服务列表。现在我想将子服务添加到服务列表中。我有两个 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
结束相同的循环。