带spreep的嵌套SQL语句?

带spreep的嵌套SQL语句?,sql,symfony1,symfony-1.4,propel,Sql,Symfony1,Symfony 1.4,Propel,我正在尝试将SQL语句转换为Propel,但没有取得太多成功。我有以下SQL语句: SELECT id, param1, param2 FROM Field1 WHERE id in ( SELECT DISTINCT Field1_id FROM Field2 WHERE id

我正在尝试将SQL语句转换为Propel,但没有取得太多成功。我有以下SQL语句:

SELECT id, param1, param2
              FROM Field1
              WHERE id
              in
              (
                  SELECT DISTINCT Field1_id
                  FROM Field2
                  WHERE id in
                  (
                      SELECT DISTINCT `Field2_id`
                      FROM `Field3`
                      WHERE
                      `param7` is null
                      AND param5 > 40
                  )
              ) LIMIT 0, 1000
我开始用一种原始的方式做这件事:

$connection = Propel::getConnection();
$query = "my Query";
$statement = $connection->prepare($query);
$statement->execute();
$results = $statement->fetch(PDO::FETCH_ASSOC);
这非常有效,但我不能对$results执行任何推进操作,因为它是一个数组


那么,如果没有原始方式,我如何将此SQL转换为Prope?

据我所知,Prope不处理嵌套查询。相反,您可以编写。

一个很好的快速修复方法是在数据库中创建一个视图,并在spreep中为该视图设置一个只读表。然后,可以像使用普通推进表一样使用视图模型。当然,这是作弊,ORM纯粹主义者对此表示不满,但它会让你在短期内走上正轨


我的方法是尝试重构回表,在表中我将其用于一个简单的查询,但对于大型的中心查询(特别是用于主深入屏幕的复杂查询),我非常乐意永久保留视图方法。

我的问题更多的是DISTINCT关键字!不知道如何使用它在这种情况下与推进。真的好主意!我现在就用它!但我不能接受你的回答,因为我真的想看看人们如何以“适当”的方式解决这个问题。谢谢,没问题。如果您需要帮助,请点击这里-不要忘记推进网站上的模式文档非常好。我想你需要的是