当前位置: 首页 > 面试题库 >

Propel ORM-连接不相关的表

柴声
2023-03-14
问题内容

该SQL语句如何转换为Propel(1.6.3)?

SELECT * FROM table_a JOIN table_b

由于tableA和tableB不共享外键,也没有定义关系。

TableAQuery::create()->join('tableB')

无法运作,因为Propel报错:

“致命错误:消息’TableA表上的未知关系TableB的未捕获异常’PropelException’

非常感谢您的帮助和提示!这是我在这里的第一篇文章,希望我还没有做错任何事情:-)(在发布之前,我已经进行了彻底的搜索!)


问题答案:

您可以通过使用原始SQL语法来解决此限制。例如:

$con = Propel::getConnection(SomePeer::DATABASE_NAME);
$query = 'SELECT * FROM `table_a` JOIN `table_b` LIMIT 10';
$stmt = $con->prepare($query);
if($stmt->execute()) {
    $res = $stmt->fetchAll();
    var_dump($res);
}

注意#1:此类联接可能会变得很大,并很快耗尽允许的内存大小。这就是为什么我添加了一个LIMIT

注意#2:输出不是很干净,既有数字键又有关联键的数组。也许有办法可以改善这一点。



 类似资料:
  • 另一个宽大处理--B: 这里要注意,实体A和B之间没有隐式关系,B表中的a_id是手工处理的,因此--关系类似于一对多(A-->B),但不是jpa-hibernate关系。而且,我的FullDto有A的所有属性和B的列表: 现在,我想从A的存储库接口中提取所有内容(A和B表一次完成),如下所示:

  • 我使用Java应用程序前端与MySQL 5.6服务器上的数据库进行连接和交互。使用MySQL的JDBC连接器时,我遇到了连接到服务器的问题,当连接失败时,服务器没有关闭。调用close()。但当应用程序关闭时,所有连接都会断开。下面是用于进行查询的dao类。 接下来的代码是使用数据库验证应用程序用户的方法。有一些System.out.println()语句在整个过程中跟踪con变量。 运行该方法的

  • 一、环境 Hadoop 0.20.2版本、Hive-0.5.0版本、JDK1.6 二、使用目的 1、一般来说我们对hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连接都存放一个元数据,各个之间都不相同,所以,对于这样的模式我建议是用来做一些测试比较合适,并不适合做产品的开发和应用。 2、因此,就产生的JDBC连接的方式,当然还有其他的连接方式,比如ODBC等。

  • 我使用Hibernate恩维尔斯来审核我的实体。 我有一个被审计的实体,,它有一个 ,我得到错误< code>ORA-00942:表或视图不存在,因为它试图查询: 我认为,使用,Hibernate Envers将保留与当前实体的item的链接。 那么,我该如何解决我的问题,而不必显式地审计表< code>T_BAR和< code>T_FOO_BAR(连接表)?换句话说,当我从我的修订实体中检索<

  • 问题内容: 有什么办法可以使两个表之间没有直接关系但又在hibernate中有两个公共字段呢? 我有两个表,称为boiler_plates和profile,它们之间没有直接关系,但是有一个名为contract_id的公共字段。 我写了查询“来自bp.bt_contracts = p.contract_id上的Boiler_Plates bp内部连接配置文件p”,但它不断抛出错误。“意外令牌:在第1

  • 问题内容: 我有一个网站,该网站将选项存储在多个表中,并根据单个页面提取所有相关选项。此刻,我结束了这样的查询:。这确实不是一个坏问题,但是我必须逐个遍历每个选择结果。 我想将所有这些提取到单个网格中,然后执行类似的操作 如果使用类似的查询,则会结束所有可能的行组合(第一个foo第一栏,第二个foo第二栏,第二个foo第一栏,第二个foo第二栏等)。 有没有一种方法可以执行这样的选择,并且每个元素