web-dev-qa-db-fra.com

explication de base des jointures de typeorm

accord pour guider le typeorm: https://github.com/typeorm/typeorm/blob/master/docs/select-query-builder.md#inner-and-left-joins

Je ne comprends pas très bien cette partie:

(type => Photo, photo => photo.user)

que veut dire type? que signifie photo => photo. ? . ce n'est pas bien expliqué sur le lien.

Code partiel:

Import {Entity, PrimaryGeneratedColumn, Column, OneToMany} from "typeorm";
import {Photo} from "./Photo";

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToMany(type => Photo, photo => photo.user)
    photos: Photo[];
}

et sur le code:

const user = await createQueryBuilder("user")
    .leftJoinAndSelect("user.photos", "photo")
    .where("user.name = :name", { name: "Timber" })
    .getOne();

d'où vient "" user.photos "?

5
DDave

Première question: (type => Photo, photo => photo.user)

Le décorateur de @OneToMany Prend deux fonctions, la première renvoie l'entité associée, la seconde renvoie la propriété "clé étrangère" de l'entité associée. Puisque "type" n'est même pas utilisé, vous n'en avez en fait pas besoin. J'omets complètement le type en utilisant @OneToMany(()=> Photo, photo => photo.user) Cela n'a pas été un problème pour moi.

Deuxième question: where comes "user.photos"

La leftJoinAndSelect("user.photos", "photo") fait référence à la propriété photos définie dans l'entité User. C'est la dernière ligne de la classe User.

3
Splitty