使用blade中的关系在Laravel中查询?

使用blade中的关系在Laravel中查询?,laravel,laravel-5,laravel-4,laravel-5.2,laravel-5.1,Laravel,Laravel 5,Laravel 4,Laravel 5.2,Laravel 5.1,我有下列表格 用户 请求 服务器 它们以以下方式相互关联 用户有许多请求 服务器有许多请求 现在我想要的是不重复地获取与用户的请求相关联的所有服务器 我必须在blade视图中执行此操作,因为在该视图中,我迭代服务并在表中显示它们 到目前为止,我一直在尝试以下方法 @foreach($requests as $request) @php $serversUser = \App\Server::where('requestsofservice', function($quer

我有下列表格

  • 用户
  • 请求
  • 服务器
它们以以下方式相互关联

  • 用户
    有许多
    请求
  • 服务器
    有许多
    请求
现在我想要的是不重复地获取与用户的请求相关联的所有服务器

我必须在blade视图中执行此操作,因为在该视图中,我迭代服务并在表中显示它们

到目前为止,我一直在尝试以下方法

@foreach($requests as $request)    
@php
    $serversUser = \App\Server::where('requestsofservice', function($query){
    $query->where('user_id',$request->user->id);
    });
@endphp
@endforeach
但是由于变量
$request->user->id
,它无法工作

结果是

未定义变量:请求

那么,我如何才能不重复地获得用户a与他们的请求相关的服务呢

当我迭代从中发送的请求时 控制器指向视图,在click foreach中,我得到
用户和该用户请求中的所有服务器。

$request
在您的函数中不存在。通过执行
函数($query)使用($request)
传递它

请参阅PHP关于变量范围的文档:


关于匿名函数(特别是“示例#3从父范围继承变量”位):

和最佳实践注释:您不应该在视图中执行查询。您应该在控制器中执行这些操作。@ceejayoz hou我不能执行数据吗?您应该在控制器中执行预处理,然后将整个后处理的
$requests
数组传递给视图。