I’m currently stuck on how to merge two query results into a single object . Below is my code.
EDITED
Model methods
JavaScript
x
public static function getTeamStats($competitionId, $teamId) {
return TeamCompetitionStatistics::where('competitionId', $competitionId)
->where('teamid', $teamId)
->where('periodNumber', 0)
->get();
}
public static function getTeamPosition($competitionId, $teamId){
return self::where('latest', 1)
->where('competitionId',$competitionId)
->where('competitorId', $teamId)
->get(['position', 'streak'])
->map(function($item, $key){
$item->position = $item->position . date("S", mktime(0, 0, 0, 0, $item->position, 0));
if(strpos($item->streak, '-') !== FALSE) {
$item->streak = str_replace('-', 'L', $item->streak);
}
else {
$item->streak = 'W'.$item->streak;
}
return $item;
});
}
Getting values in controller
JavaScript
$teamStanding = Ladder::getTeamPosition($request->competitionId, $request->id);
$teamStatistics = TeamCompetitionStatistics::getTeamStats($request->competitionId, $request->id);
$result = $teamStatistics->merge($teamStanding);
Returned result: [{'teamstanding': 'data'}, {'teamstatictics': 'data'}]
Expected output: [{'teamstanding': 'data', 'teamstatictics': 'data'}]
Advertisement
Answer
You can use all() function.
JavaScript
$teamStanding = Ladder::getTeamPosition($request->competitionId, $request->id)->get();
$teamStatistics = TeamCompetitionStatistics::getTeamStats($request->competitionId, $request->id)->get();
$merged = $teamStatistics->merge($teamStanding);
$result = $merged->all();
// return [{'teamstanding': 'data', 'teamstatictics': 'data'}]