Laravel returns 间接修改 App\Match 的重载元素在按下新键时无效
Laravel returns Indirect modification of overloaded element of App\Match has no effect when pushing new key
我在 adding/pushing 结果数据的新键值时遇到问题,它 return 间接修改 App\Match 的重载元素。
$results[$key]['competitors'][1]->teamScore = $results[$key]['competitors'][0]->scoreString;
模型匹配方法
public static function getTeamWinLossRecord($competitionId, $teamId) {
$data = [];
$results = self::select(['roundNumber', 'competitors'])
->where('competitionId', $competitionId)
->orderBy('roundNumber', 'desc')
->get()
->map(function($item){
$item['roundNumber'] = $item->roundNumber;
$item['competitors'] = json_decode($item->competitors);
return $item;
});
foreach ($results as $key => $matchArr) {
if( $matchArr['competitors'][0]->competitorId == $teamId || $matchArr['competitors'][1]->competitorId == $teamId){
if($matchArr['competitors'][0]->competitorId == $teamId){
$results[$key]['competitors'][1]->teamScore = $results[$key]['competitors'][0]->scoreString;
array_push($data, ['Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][1]]);
}
else{
array_push($data, ['Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][0]]);
}
}
}
dd($data);
}
像这样替换数组推送,
$data[] = array('Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][1]]);
我在 adding/pushing 结果数据的新键值时遇到问题,它 return 间接修改 App\Match 的重载元素。
$results[$key]['competitors'][1]->teamScore = $results[$key]['competitors'][0]->scoreString;
模型匹配方法
public static function getTeamWinLossRecord($competitionId, $teamId) {
$data = [];
$results = self::select(['roundNumber', 'competitors'])
->where('competitionId', $competitionId)
->orderBy('roundNumber', 'desc')
->get()
->map(function($item){
$item['roundNumber'] = $item->roundNumber;
$item['competitors'] = json_decode($item->competitors);
return $item;
});
foreach ($results as $key => $matchArr) {
if( $matchArr['competitors'][0]->competitorId == $teamId || $matchArr['competitors'][1]->competitorId == $teamId){
if($matchArr['competitors'][0]->competitorId == $teamId){
$results[$key]['competitors'][1]->teamScore = $results[$key]['competitors'][0]->scoreString;
array_push($data, ['Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][1]]);
}
else{
array_push($data, ['Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][0]]);
}
}
}
dd($data);
}
像这样替换数组推送,
$data[] = array('Rnd '.$matchArr['roundNumber'], $results[$key]['competitors'][1]]);