Php Laravel Eloquent:如何检索select中每个列的值数组?

Php Laravel Eloquent:如何检索select中每个列的值数组?,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个“clients\u campaigns”表,它有三列。用户id、公司id和活动id。我想获得具有特定用户id的所有公司id和活动id的列表。通过这两个列表,我将搜索其他两个表,即公司和活动。通过使用每个列表,我将找到与id关联的名称 我不确定如何创建包含每种类型id的两个列表。下面是我迄今为止的尝试和代码 $ids = \DB::table('clients_campaigns')->select('company_id','campaign_id')

我有一个“clients\u campaigns”表,它有三列。用户id、公司id和活动id。我想获得具有特定用户id的所有公司id和活动id的列表。通过这两个列表,我将搜索其他两个表,即公司和活动。通过使用每个列表,我将找到与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',...);

以当前示例为例,您可以将第一个查询的结果检索到集合中,然后使用该集合为每个后续查询提取结果

将此付诸实践将如下所示:

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

以当前示例为例,您可以将第一个查询的结果检索到集合中,然后使用该集合为每个后续查询提取结果

将此付诸实践将如下所示:

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

如果你真的想这样做的话,你已经不远了,但是你真的不需要第一个
,因为反正只有3个字段。然后,您可以
分别提取
公司id
活动id
列,以便在接下来的两个查询中使用:

$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');
}
如果在第一次查询中使用Pull,您将有一个由
活动\u id
键入的列表,那么您只需使用
活动
查询的键,以及
公司
查询的值


您还可以选择将查询对象传递给
,而在
中调用。

如果您真的想这样做,您已经不远了,但是您确实不需要第一次
抓取,因为无论如何只有3个字段。然后,您可以
分别提取
公司id
活动id
列,以便在接下来的两个查询中使用:

$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');
}
如果在第一次查询中使用Pull,您将有一个由
活动\u id
键入的列表,那么您只需使用
活动
查询的键,以及
公司
查询的值

您还可以选择将查询对象传递给
调用,而
调用。

谢谢您的帮助:)当您说如果我真的想这样做,您的意思是说有更好的方法可以这样做吗?谢谢您的帮助:)当您说如果我真的想这样做,你是说有更好的办法吗?