Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 从EXTO中的查询中获取主键_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir 从EXTO中的查询中获取主键

Elixir 从EXTO中的查询中获取主键,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我希望从查询中动态获取主键。我有一个主意。首先,我从查询中获取模式(我不知道如何获取)。之后,我将从模式中获取表名: {_, table_name} = %Core.Schema{}.__meta__.source 并发送将获取主键的SQL。 因此,就产生了三个问题: 有没有办法从查询中获取模式(以及在获取表名之后) 是否直接从查询中获取表名 exto.primary_key()不能处理查询,也许它们有其他方法 如果查询是使用架构模块构建的(即from(Post中的p),而不是from(pos

我希望从查询中动态获取主键。我有一个主意。首先,我从查询中获取模式(我不知道如何获取)。之后,我将从模式中获取表名:

{_, table_name} = %Core.Schema{}.__meta__.source
并发送将获取主键的SQL。 因此,就产生了三个问题:

  • 有没有办法从查询中获取模式(以及在获取表名之后)

  • 是否直接从查询中获取表名

  • exto.primary_key()不能处理查询,也许它们有其他方法


  • 如果查询是使用架构模块构建的(即
    from(Post中的p)
    ,而不是
    from(posts中的p)
    ),则可以使用查询的
    from
    字段获取模块:

    iex(1)> query = from(p in Post, where: p.id == 1)
    #Ecto.Query<from p in MyApp.Post, where: p.id == 1>
    iex(2)> %{from: {_table, module}} = query
    #Ecto.Query<from p in MyApp.Post, where: p.id == 1>
    iex(3)> module
    MyApp.Post
    
    iex(4)> module.__schema__(:primary_key)
    [:id]