0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

entでOR句を発行する時に困ったこと

Posted at

困ったこと

entでOR句を発行する際に、OR句の中でAND句を使用したかったのですが、中々実装できずに困ったので記事にしました。

実装方法

entはWhere句をつなげる際に,引数に入れることでAND句を繋げていくことができます。
なので、OR句の中でANDの引数の中に,を入れることで対象のSQLを発行することができます。

client.Pet.
    Query().
    Where(
        pet.Or(
            pet.And(
                pet.HasOwner(),
                pet.DeletedAtIsNil(),
            pet.Not(pet.HasFriends())
        )
    ).
    All(ctx)

余談ですが、Andを使用しなくてもWhere内部でカンマで区切ればAND繋ぎになります。

client.Pet.
    Query().
    Where(
        pet.HasOwner(),
        pet.DeletedAtIsNil()).
   All(ctx)

感想

entはまだまだ参考できるサイトが少ないので、結構詰まってしまいました。
また、Railsに慣れていたのもあってメソッドチェーン的にできるのかなぁ?と思っていたので引数で渡していくのも驚きでした。
ただ、メソッドチェーンの場合は戻り値とか気にしないといけないですが、引数の場合は気にしなくて良いのでこちらの方がミスとか少ないんだろうなぁとか思ったりしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?