Elixir Language
エクト
サーチ…
エリクサープログラムでEcto.Repoを追加する
これは3つのステップで行うことができます:
あなたはEcto.Repoを使用するエリクシールモジュールを定義し、あなたのアプリをotp_appとして登録する必要があります。
defmodule Repo do use Ecto.Repo, otp_app: :custom_app end
また、データベースに接続できるようにする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"
アプリケーションで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」のPostを取得できます。
MyRepo.get_by(Post, [title: "hello", description: "world"])
Repo.get_byは2番目の引数にキーワードリストを期待しているので、これはすべて可能です。
動的フィールドを使用したクエリ
変数に含まれる名前のフィールドを照会するには、 field関数を使用します 。
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