2017-02-09 62 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]); 
相關問題