我有3张桌子,食物,订单和订单商品。在食品表中,它有food_id,名称和价格。订单表有order_id和日期。在order_items表中,它有order_id,food_id和quantity。
schema "orders" do
has_many :order_items, Myapp.OrderItem
timestamps
schema "foods" do
field :name, :string
field :price, :integer
has_many :order_items, Myapp.OrderItem
timestamps
schema "order_items" do
field :quantity, :integer
belongs_to :order, Myapp.Order
belongs_to :food, Myapp.Food
timestamps
我想问的是,我可以在order_items表中使用food_id数据来显示其价格和名称吗?如果我能做到这一点,我该怎么做?
答案 0 :(得分:1)
您想要通过食物获取订单,您可以使用Repo.preload/2预先加载关键字列表:
order = Repo.get(Order, 1) |> Repo.preload(order_items: :food)
您尚未指定要显示项目的格式。要在EEx模板中输出它们,您可以执行以下操作:
<%= for order_item <- @order.order_items do %>
<%= order_item.food.name %> (<%= order_item.food.price %>)
<% end %>