2 回答
TA贡献1877条经验 获得超1个赞
如果您真的想这样做,那么您已经不远了,但您真的不需要第一个pluck,因为无论如何只会有 3 个字段。然后,您可以pluck将company_id和campaign_id列分别用于接下来的 2 个查询:
$ids = DB::table('clients_campaigns')
->where('user_id', $request->user_id)
->get(['company_id', 'campaign_id']);
if ($ids->notEmpty()) {
$companyNames = Company::whereIn('id', $ids->pluck('company_id'))
->pluck('name');
$campaignNames = Campaign::whereIn('id', $ids->pluck('campaign_id'))
->pluck('name');
}
如果您在第一个查询中使用 pluck,您将有一个键控列表,campaign_id那么您将不得不只使用查询的键和Campaign查询的值Company。
您还可以选择将查询对象传递给whereIn调用。
TA贡献1786条经验 获得超13个赞
以您当前的示例为例,您可以将第一个查询的结果检索到一个集合中,然后使用该集合为每个后续查询提取结果。
将其付诸实践将如下所示:
$ids = \DB::table('clients_campaigns')->select('company_id','campaign_id')
->where('user_id',$request->user_id)
->get();
->pluck('company_id','campaign_id');
if ($ids->count()) {
//use those id's to retrieve the company names and campaign names
Company::select('name')->whereIn('id', $ids->pluck('company_id'));
Campaign::select('name')->whereIn('id', $ids->pluck('campaign_id'));
}
- 2 回答
- 0 关注
- 119 浏览
添加回答
举报