duas colunas em que a cláusula se mescla com vírgula

8

Eu quero construir uma consulta.

aqui está a tabela:

id  user_id  sn_no
1   22       00112233
2   22       987654325
3   22       65489732
4   25       984123123
5   25       9568456456
6   25       65456456

Eu quero resultado assim:

{
   "user_id":22,
   "sn_no": "00112233,987654325,65489732"
}
{
   "user_id":25,
   "sn_no": "984123123,9568456456,65456456"
}

Alguém pode ajudar a resolver este problema?

Eu tentei: concat, GROUP_CONCATmas não pode obter o resultado.

Você pode me ajudar a adicionar isso na consulta Participar?

$users = \DB::table('users')
            ->join('users_mcu', 'users.id', '=', 'users_mcu.user_id')
            ->join('country_user', 'users.id', '=', 'country_user.user_id')
            ->join('country_phase_color', 'country_user.country_id', '=', 'country_phase_color.id')
            ->select('users.id', 'users.first_name', 'users.last_name', 'users.company', 'users.designation', 'users.lang', 'users.phone', 'users.disp_graph', 'users.user_image', 'users.email', 'users.role', 'users.created_at', 'users.updated_at', 'country_user.country_id', 'country_phase_color.country_name')
            ->get();
vdr
fonte
DB :: raw ("(GROUP_CONCAT (sn_no SEPARATOR ',')) como sn_novocê usou o grupo concat como este
Pankaj Bisht
o padrão SEPARATOR é ','então não há necessidade de defini-lo novamente
Dilip Hirapara 25/02
Compartilhe o seu lugar onde você tentou GROUP_CONCAT
Sehdev

Respostas:

4

Tente isto-

YourModel::select('user_id')
         ->selectRaw('GROUP_CONCAT(sn_no) as sn')
         ->groupBy('user_id')
         ->get();
Rashed Hasan
fonte
Por favor, verifique a resposta atualizada. Na verdade, eu não sei o nome da coluna sn_noem que tabela ... por favor, confirme sobresn_no
Rashed Hasan 25/02
sn_no é armazenado na tabela
user_mcu
Por favor, verifique a atualização
Rashed Hasan
IT diz -------users.id 'não está em GROUP BY
vdr 25/02
mesmo erro: users_mcu.user_id
vdr 25/02
1

Tente isso.

$data = \DB::table('tablename')->select('user_id', \DB::raw('group_concat(sn_no) as sn_nos'))->groupBy('user_id')->get();

como se você quiser mudar SEPARATOR, você pode usá SEPARATOR-lo, caso contrário, o padrão será','

\DB::table('tablename')->select('user_id',DB::raw("(GROUP_CONCAT(sn_no SEPARATOR '@')) as `sn_nos`"))->groupBy('user_id')->get();
Dilip Hirapara
fonte
1

usar mysql group_concat função e laravel groupBy e crua função

DB::tabe('tableName')
   ->select('id','user_id',\DB::raw('GROUP_CONCAT(`sn_no`) as sn_no_t'))
   ->groupBy('user_id')
   ->get()
Jignesh Joisar
fonte
0

Tente isto

use DB;

DB::table('tableName')
        ->select('id','user_id','DB::raw("(GROUP_CONCAT(sn_no SEPARATOR ',')) as `sn_nos`")')
        ->groupBy('user_id')
        ->get();
Vikas Katariya
fonte
-1

Você pode tentar isso

Model::select('user_id')
       ->selectRaw('GROUP_CONCAT(sn_nos) as sn_nos')
       ->groupBy('user_id')
       ->get();
bhavinjr
fonte