Ecto를 사용하는 Elixir/Phoenix에서 실행중인 일련의 복잡한 쿼리가 있습니다. 이러한 목표는 새 항목을 작성하고 이전 행을 갱신하는 데이 조회를 작동하게하는 것입니다. 이를 위해 필자가 테이블을 업데이트하는지 여부를 정의하는 함수 매개 변수를 사용합니다.Elixir Ecto 함수 매개 변수를 기반으로 한 쿼리 변경
defp get_chargebacks(%{user_id: user_id} = map, is_update \\ false)
그리고 is_update = true
경우 것은 그때가를 추가 할 것입니다 :
# Retrieves the stats on the user chargebacks
defp get_chargebacks(%{user_id: user_id} = map) do
query =
from u in Users,
left_join: c in ChargeBacks, on: [user_id: u.id],
where: u.id == ^user_id,
select: %{chargeback_amount_cents: sum(c.amount), chargeback_amount_count: count(c.user_id), chargeback_amount_currency: @default_currency},
group_by: u.id
result = query
|> RepoBVCore.one
Map.merge(map, Map.put(result, :chargeback_amount_cents, Map.get(result, :chargeback_amount_cents) || 0))
end
내가 그것을 다음 될 수 있도록 기능을 변경하려면 : 예를 들어, 지금 나는 다음과 같은 기능을 가지고
where: c.amount > 100
가 어떻게 조건부 쿼리 문을 변경하는 내 원래의 기능을 변경할 수 있습니다 : 함수 (예를 들어)에 추가 where
절? 감사.
대단히 고마워요! – user2694306