SQL直実行 | dataSource.query() | 配列が戻り値 |
SQL直実行でバイド | dataSource.query("xxx = ?",[1]) | PHPと同じじゃ! |
SQLに近いが独自 | dataSource.createQueryBuilder(Entity).getMany() | |
カウント | dataSource.getRepository(Trips).count({ where: { carId: carId } }) | 条件付けないならcount()あるが、一度に取得できるfindAndCountがよい |
where条件直記載 | dataSource.getRepository(PosRecords).count({where: {recorded: Raw((alias) => `${alias} between :from AND :to`,{from: '2022-10-1', to: '2022-11-1'})}}); | toとfromをパラメータ化 |
between | created: Between(start, end) |
in | level: In([1, 2]) |
https://www.npmjs.com/package/typeorm-model-generator
npx typeorm-model-generator
後はインタラクティブにMySQLを選べばOK!
npm typeorm-model-generator -h 127.0.0.1 -d <database> -u root -x [password] -e mariadb
findはrelationなどいろいろ設定できるにたいし、findByは条件のみ記載できる。そのためorderなどを指定する場合は必然的にfindを使うことになり、findOneBy以外はあまり使わないんではないか? Oneはその1レコードバージョンでAndCountだと件数も取れる
in条件 | In(array) |
https://zenn.dev/msksgm/articles/20211124-typeorm-many2many
自然に任せると勝手にテーブル推定してわけわからんので指定すること!StoreテーブルのPrefectureがこれ!
@ManyToMany(() => Prefecture) @JoinTable({ name: "store_prefecture", // table name for the junction table of this relation joinColumn: { name: "store_id", referencedColumnName: "id" }, inverseJoinColumn: { name: "prefecture_id", referencedColumnName: "id" } })
テーブルあるのに作ろうとしてエラー。
create table test (`created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
create table test (`created` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
@UpdateDateColumn({ name: 'modified', type: 'datetime', width: 6, precision: 0})