Php 拉威尔:我怎样才能从快速加载中得到结果?

Php 拉威尔:我怎样才能从快速加载中得到结果?,php,laravel,eloquent,Php,Laravel,Eloquent,我的控制器中有以下代码: $users = User::->get(); $users->load('company'); 查询: select * from `users` order by `lastname` asc select * from `companies` where `companies`.`id` in ('4', '9') 如何从第二个查询中获得结果(集合)?这里似乎有一个用户属于公司关系,因此加载的结果(不是急切的,而是相当懒惰的)是单个模型,而不是集

我的控制器中有以下代码:

$users = User::->get();
$users->load('company');
查询:

select * from `users` order by `lastname` asc

select * from `companies` where `companies`.`id` in ('4', '9')

如何从第二个查询中获得结果(集合)?

这里似乎有一个
用户属于公司
关系,因此加载的结果(不是急切的,而是相当懒惰的)是单个
模型,而不是
集合

也就是说,您可以通过以下方式访问相关模型:

foreach ($users as $user)
{
  $user->company;
}
现在,要获取这些公司的
集合
,您需要以下内容:

$users = User::all(); // or User::someChainedMethodsHere->get();
$companyIds = $users->fetch('company_id')->toArray(); // assuming company_id is the foreign key
$companies = Company::whereIn('id', $companyIds)->get(); // assuming id is the PK
// returns the Collection you wanted

我认为这是一个
用户因为他的第二个查询而与许多公司有关系。看起来,
where companys.id in…
应该替换为
where companys.user\u id in…
您建议的是,
的查询有很多
,而您所指的查询是为
belongsTo
工作。这是一种belongsTo关系。当我使用此代码时:
$companiesid=array\u unique($users->fetch('company\u id')->toArray())
$companys=Company::其中('id',$companyesid)->get()
我有两个相同的查询:
select*from companys where companys.id in('4','9')
select*from companys where id in('4','9')
我在我的视图中使用
{{$user->company company->title}}
并且我想在视图顶部列出所有公司的列表?是的,查询是一样的,但雄辩者对待结果的方式不同。使用
load
将公司与用户匹配,而根据我的建议,它只将结果存储在一个集合中。因此,您可以在视图中使用它:
@foreach($companys as$company){{{{$company->title}}…
。我想这就是你要的?