Search code examples
elixirphoenix-frameworkecto

How to write associate same table at the same time with Ecto


I have following 2 tables. One is MEMBER table. The other is ORDER table. ORDER table has 4 reference include updated_by to MEMBER.id. All ids associate with Member.id.

------
MEMBER
------
 id
 name

------
ORDER
------
 id
 order_member_id
 delivery_member_id
 signed_member_id
 update_by

I wrote order.ex like following. However it does not work.

defmodule Sample.Store.Order do
  use Ecto.Schema
  import Ecto.Changeset

  schema "orders" do
    field :name :string

    belongs_to :order_member, Sample.Store.Member
    belongs_to :delivery_member, Sample.Store.Member
    belongs_to :signed_member, Sample.Store.Member
    belongs_to :update_by, Sample.Store.Member
  end

With ecto, is it impossible to associate with referenced table? In case of Member, it should be belongs_to :member, Sample.Store.Member?

Or is it simpler to write SQL directory?

I would like to know if it possible or not.

Thanks!!


Solution

  • Try set foreign_key like

       belongs_to :order_member, Sample.Store.Member, foreign_key: :order_member_id
       belongs_to :delivery_member, Sample.Store.Member, foreign_key: :delivery_member_id