【问题标题】:preload nested association query预加载嵌套关联查询
【发布时间】:2018-05-04 20:27:33
【问题描述】:

我正在尝试在查询预加载中进行排序。这是我的查询:

query =
      from(
        p in Project,
        preload: [rows: {from(r in Row, order_by: r.index), [images: from(r in Row, order_by: r.index)}]],
        where: p.user_id == ^user_id
      )

但这不起作用并给我一个语法错误:

** (SyntaxError) web/controllers/project_controller.ex:11: "{" is missing terminator "}". unexpected token: ")" at line 13

有人知道如何使用 Ecto 预加载嵌套属性吗?

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    您收到此SyntaxError,因为括号不平衡。

    下面的代码解决了这个问题:

    query =
      from(
        p in Project,
        preload: [rows: {from(r in Row, order_by: r.index), images: from(r in Row, order_by: r.index)}],
        where: p.user_id == ^user_id
      )
    

    但实际上,如果你有Projecthas_manyrowsRowhas_manyimages,那么预加载这些关联将很简单,如下所示:

    from p in Project, preload: [rows: :images]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多