수색…


엘 릭서 프로그램에 Ecto.Repo 추가하기

이 작업은 3 단계로 수행 할 수 있습니다.

  1. Ecto.Repo를 사용하는 elixir 모듈을 정의하고 app를 otp_app로 등록해야합니다.

    defmodule Repo do
      use Ecto.Repo, otp_app: :custom_app
    end
    
  2. 또한 데이터베이스에 연결할 수있는 Repo에 대한 일부 구성을 정의해야합니다. 포스트그레스 예제입니다.

    config :custom_app, Repo,
       adapter: Ecto.Adapters.Postgres,
       database: "ecto_custom_dev",
       username: "postgres_dev",
       password: "postgres_dev",
       hostname: "localhost",
      # OR use a URL to connect instead
      url: "postgres://postgres_dev:postgres_dev@localhost/ecto_custom_dev"
    
  3. 응용 프로그램에서 Ecto를 사용하기 전에 응용 프로그램을 시작하기 전에 Ecto가 시작되었는지 확인해야합니다. 관리자로 lib / custom_app.ex에 Ecto를 등록하면됩니다.

        def start(_type, _args) do
          import Supervisor.Spec
    
          children = [
           supervisor(Repo, [])
          ]
    
          opts = [strategy: :one_for_one, name: MyApp.Supervisor]
          Supervisor.start_link(children, opts)
        end
    

Repo.get_by / 3의 절 "및"

Ecto.Queryable이 있으면 제목과 설명이있는 Post라는 이름이 붙습니다.

다음을 수행하여 제목이 "hello"이고 설명이 "world"인 게시물을 가져올 수 있습니다.

 MyRepo.get_by(Post, [title: "hello", description: "world"])

Repo.get_by는 두 번째 인수에서 키워드 목록을 예상하기 때문에이 모든 작업이 가능합니다.

동적 필드를 사용하여 쿼리하기

변수에 포함 된 이름의 필드를 조회하려면 필드 함수를 사용하십시오.

some_field = :id
some_value = 10

from p in Post, where: field(p, ^some_field) == ^some_value

마이그레이션 및 스키마에 사용자 지정 데이터 형식 추가

(이 답변에서)

아래 예제는 열거 형 을 postgres 데이터베이스에 추가합니다.

먼저, 마이그레이션 파일 ( mix ecto.gen.migration 생성)을 편집하십시오.

def up do
  # creating the enumerated type
  execute("CREATE TYPE post_status AS ENUM ('published', 'editing')")

  # creating a table with the column
  create table(:posts) do
    add :post_status, :post_status, null: false
  end
end

def down do
  drop table(:posts)
  execute("DROP TYPE post_status")
end

둘째, 모델 파일 에서 Elixir 유형을 가진 필드를 추가하십시오.

schema "posts" do
  field :post_status, :string
end

또는 Ecto.Type 비헤이비어를 구현할 수 있습니다.

후자의 좋은 예는 ecto_enum 패키지이며 템플릿으로 사용할 수 있습니다. 사용법은 github 페이지 에 잘 설명되어 있습니다.

이 커밋 은 Phoenix 프로젝트에서 enum_ecto를 프로젝트에 추가하고 뷰와 모델에서 열거 형을 사용하는 예제 사용법을 보여줍니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow