如何使用 pqxx 6.4 将子复合部分作为行获取?

问题描述

我尝试在生成代码添加 C++ 对象的 SLQ 表示。 每个 c++ 类都有一个构建器,负责从 sql 数据库保存/恢复对象。

我有一个这样的电话

SELECT With_ext_key.id,With_ext_key.name3,(k1_table.id,k1_table.name1,k1_table.name2,k1_table.re) as k1,(k2_table.id,k2_table.name1,k2_table.name2,k2_table.re) as k2
 FROM With_ext_key
      INNER JOIN With_key AS k1_table ON k1_table.id = With_ext_key.k1
      INNER JOIN With_key AS k2_table ON k2_table.id = With_ext_key.k2 

我得到的结果看起来像。

1|fn1|(5,"name A","name B",0.2)|(6,"name C","name D",0.5)

我的 C++ 代码看起来像。

class With_key {
  void build_from_sql(pqxx::row d);
  ...
};

class With_ext_key {
 void build_from_sql(pqxx::row d);
 ...
};

void With_ext_key::build_from_sql(pqxx::row d) {
  this->id = d["id"].as<int>();
  this->name3 = d["name3"].as<std::string>();
  this->k1.build_from_sql(d[k1].as<pqxx::row>()); // this line failled i cannot access to sub element.
}

d[k1] 是一个字段,我没有找到任何方法来探索这个子数据作为一行。 我刚发现复合系统,但这种方法破坏了公共/私有或重复代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)