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]]);