Kurisu

Kurisu

Please how can I factorize a condition with multiple alternative conditions in Ecto.Query?

Please see the below examples:

# Approach 1
Query
|> where([...], cond_a and cond_b)
|> or_where([...], cond_a and cond_c)
|> or_where([...], cond_a and cond_d)
|> or_where([...], cond_a and cond_e)

# Approach 2
Query
|> where([...], cond_a)
|> where([...], cond_b or cond_c or cond_d or cond_e)

Isn’t there another way to write this query without repeating cond_a apart from the approach2?

Something like:

Query
|> where_always([..], cond_a)
|> or_where([...], cond_b)
|> or_where([...], cond_c)
|> or_where([...], cond_d)
|> or_where([...], cond_e)

Edit: where_always of course is purely imaginary and means the condition should be met first and always then we can consider the or_where conditions.

Most Liked

LostKobrakai

LostKobrakai

Generally I suggest using the ˋdynamicˋ macro wherever you‘re in need of more complex condition combinations.

OvermindDL1

OvermindDL1

Why not this:

query
|> where([...], cond_a and (cond_b or cond_c or cond_d or cond_e))
OvermindDL1

OvermindDL1

Then I absolutely would have composed a dynamic where instead (using dynamic) and then put that onto the final query via where as normal.

Where Next?

Popular in Questions Top

JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
pgiesin
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database. Dep...
New
Kagamiiiii
Student & New to elixir. Nice language. I want to convert a english character, e.g. “a”, which is stored in a variable, to it’s asci...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
mathew4509
I have a list say x = ["23gh", "56kh", "97mh"] I would like to pass each element to Val in each iteration. Say, in iteration 1 -------...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New

Other popular topics Top

JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 45766 226
New
lastday4you
I wanted to check elixir version in phoenix because i found that my elixir is 1.5 but when i use Enum.chunk_by it said the function is un...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

We're in Beta

About us Mission Statement