Laravel concat не работает

У меня проблема с Laravel CONCAT, он не объединяет поля БД. Когда я проверял возвращенные данные, у них нет fullName

public function getAllPlayers()
{
    $data = Player::select(DB::raw('CONCAT(familyName," ",firstName) AS fullName'))
        ->orderBy('familyName', 'asc')
        ->join('teams', 'players.primaryClubId', '=', 'teams.clubId')
        ->select(['players.*', 'teams.teamName', 'teams.teamNickname', 'teams.teamCode'])
        ->get()
        ->unique() //remove duplicates
        ->groupBy(function($item, $key) { //group familyName that starts in same letter
            return substr($item['familyName'], 0, 1);
        })
        ->map(function ($subCollection) {
            return $subCollection->chunk(4); // put your group size
        });

    return $data;
}

1 ответ

Решение

Вы переопределяете select с другим select, Чтобы добавить множественный выбор, вам нужно использовать addSelect метод.

public function getAllPlayers()
{
    $data = Player::select(DB::raw('CONCAT(familyName," ",firstName) AS fullName'))
        ->orderBy('familyName', 'asc')
        ->join('teams', 'players.primaryClubId', '=', 'teams.clubId')
        ->addSelect(['players.*', 'teams.teamName', 'teams.teamNickname', 'teams.teamCode'])
        ->get()
        ->unique() //remove duplicates
        ->groupBy(function($item, $key) { //group familyName that starts in same letter
            return substr($item['familyName'], 0, 1);
        })
        ->map(function ($subCollection) {
            return $subCollection->chunk(4); // put your group size
        });

    return $data;
}
Другие вопросы по тегам