为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel Eloquent:如何检索选择中每一列的值数组?

Laravel Eloquent:如何检索选择中每一列的值数组?

PHP
达令说 2022-05-27 14:47:29
我有一个包含三列的“clients_campaigns”表。用户 ID、公司 ID 和活动 ID。我想获取具有特定 user_id 的所有 company_id 和活动 id 的列表。使用这两个列表,我将搜索另外两个表,Company 和 Campaigns。通过使用每个列表,我将找到与 id 关联的名称。我不确定如何创建两个包含每种类型 id 的列表。以下是我的尝试和到目前为止的代码。            $ids = \DB::table('clients_campaigns')->select('company_id','campaign_id')                                                  ->where('user_id',$request->user_id)                                                  ->pluck('company_id','campaign_id');            if($ids !== null){                //use those id's to retrieve the company names and campaign names               Company::select('name')->whereIn('id', ...);               Campaign::select('name')->whereIn('id',...);
查看完整描述

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调用。


查看完整回答
反对 回复 2022-05-27
?
开满天机

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'));

}


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信