typeormでの複数同名カラム条件の追加
typeormでの複数同名カラム条件の追加:
同名のカラムに対してパラメータ名が同じだと、パラメータが上書きされてしまいます。
パラメータには['hoge', 'fuga']を渡したいのに・・
NG
これで生成されるSQLが以下。
なので、意図的にパラメータ名が一意になるようにします。
OK
配列のキーに変数が簡単に使えるようになったの最高ですね。
参考:ES2015以降のJavaScriptでObjectのkeyに変数を使う - Qiita
これで生成されるSQLが以下。
同名のカラムに対してパラメータ名が同じだと、パラメータが上書きされてしまいます。
パラメータには['hoge', 'fuga']を渡したいのに・・
NG
queryBuilder.andWhere( new Brackets(subQb => { for (const [key, value] of list.entries()) { subQb.orWhere('name = :name', { name: value }); } }), );
AND (name = @2 OR name = @3) -- PARAMETERS: ["fuga","fuga"] <== 困った
OK
queryBuilder.andWhere( new Brackets(subQb => { for (const [key, value] of list.entries()) { subQb.orWhere(`name = :name_${key}`, { [`name_${key}`]: value }); } }), );
参考:ES2015以降のJavaScriptでObjectのkeyに変数を使う - Qiita
これで生成されるSQLが以下。
AND (name = @2 OR name = @3) -- PARAMETERS: ["hoge","fuga"]
コメント
コメントを投稿