These are my tables:
@Entity('localidades')
export class Localidades {
@PrimaryGeneratedColumn()
id: number;
@Column({type:"varchar",length:100})
nombre: string;
@ManyToOne(type => Provincias)
@JoinColumn({name: "idprovincia"})
provincia: string;
}
@Entity('provincias')
export class Provincias {
@PrimaryGeneratedColumn()
id: number;
@Column({type:"varchar",length:100})
nombre: string;
}
This is my query:
return await this.repository.createQueryBuilder("localidades")
.select('localidades')
.addSelect('provincias.nombre')
.leftJoin('localidades.provincia','provincias')
.getMany();
Obtained result:
{
"id": 1,
"nombre": "Ciudad 1",
"provincia": {
"nombre": "Provincia 1"
}
}
Expected result:
{
"id": 1,
"nombre": "Ciudad 1",
"provincia": "Provincia 1"
}
I need province to be returned as a field and not as an object.
Your comments will be appreciated. Thank you very much.
Try smth like this:
return await this.repository.createQueryBuilder("localidades")
.select('localidades')
.addSelect('provincias.nombre')
.leftJoin('localidades.provincia','provincias')
.addSelect('provincias.nombre AS localidades_provincia') // select with alias
.getRawMany();
UPD:
return await this.repository.createQueryBuilder("localidades")
.leftJoin('localidades.provincia','provincias')
.select([
'localidades.id AS localidades_id',
'localidades.nombre AS localidades_nombre',
'provincias.nombre AS localidades_idprovincia',
'provincias.nombre AS localidades_provincia'
]).getRawMany();