2017-02-09 66 views
0

我想获取不同的表数据并将它们保存在数组中。将不同的表数据合并到laravel中的相同数组中

$int_payment = IntPayments::where('month',$month_year)->groupBy('interviewer_id')->get(); 

    foreach ($int_payment as $inter) { 
     $inters[] = User::where('id',$inter->interviewer_id)->get(); 
     $inters['payment_status'] = $inter->payment_status; 

    } 
    return response()->json(['inters'=>$inters,'month'=>$month]); 

在这里,我从int_payment表中从interviewer_id获取用户表中的用户名。现在$inters[]具有特定用户的所有数据。现在我想从int_payments表中只提取一列并将其添加到数组$ inters。上述代码不能按预期工作。它导致了这一点。上面的代码还将付款状态添加到第一个数组值,而不是其他数组值。这样

{"inters":{"0":[{"id":1,"name":"Naveen1","phone":"7841237900",}],"payment_status":"unpaid","1":[{"id":2,"name":"john","phone":"7845123900",}]}} 

{"inters":{"0":[{"id":1,"name":"Naveen1"}],"payment_status":"unpaid",} 

但我希望它包括这样

{"inters":{"0":[{"id":1,"name":"Naveen1","payment_status":"unpaid"}],} 
{"inters":{"1":[{"id":2,"name":"john","payment_status":"paid"}],} 

回答

0

阵列内如果我有你正确的,你想有这样的事情:

{"inters":{"0":[{"id":1,"name":"Naveen1","payment_status":"unpaid"}],} 

的也许使用push对你的收藏将有帮助,因为:

$int_payment = IntPayments::where('month',$month_year)->groupBy('interviewer_id')->get(); 

foreach ($int_payment as $key => $inter) { 
    $inters = User::where('id',$inter->interviewer_id)->get(['id', 'name']); 
    $inters_payment[] = $inters->push(['payment_status' => $inter->payment_status]); 
} 

return response()->json(['inters'=>$inters_payment,'month'=>$month]); 

顺便说一句,我不知道这个$month变量的功能在哪里,但我只是把它留在你的示例代码中。

然而,一个警告是,为什么不采用laravel的关系,以迎合UserIntPayments模型之间的相互作用?因为我可以观察到,如果您返回了数千个IntPayments,那么仅仅为了这个功能,您将在users表上执行数千个查询。

你可以有一些简单而优雅的,因为这:

$inters = IntPayments::where('month',$month_year)->groupBy('interviewer_id')->with('user')->get(); 
    $result = []; 
    foreach($inters as $key => $inter) 
    { 
     $result[$key]['id'] = $inter->user->id; 
     $result[$key]['name'] = $inter->user->name; 
     $result[$key]['payment_status'] = $inter->payment_status; 
    } 

然后你可以有你的回应:

return response()->json(['inters'=> $result]); 
相关问题