CakePHP嵌套关联,空记录错误

CakePHP嵌套关联,空记录错误,cakephp,associations,nested-queries,Cakephp,Associations,Nested Queries,我有几个像树一样连接的表:1->2->3。 表1、表2和表3中的记录很少 我使用CakePHP从表1中获取所有数据,表2与表3相连。 然而,表1中很少有记录在表2中没有任何连接的记录。表2中也是一样,表3中的一些记录没有连接的记录 对于第二种情况,脚本工作正常。我得到这样的东西: 1->2->空。但在第一种情况下,当数据看起来类似于:1->empty->empty时,我得到的错误是表3不存在 是否有任何解决方案可以跳过此错误,并获得格式非常好的关联表作为返回到我的查询 $options = ar

我有几个像树一样连接的表:1->2->3。 表1、表2和表3中的记录很少

我使用CakePHP从表1中获取所有数据,表2与表3相连。 然而,表1中很少有记录在表2中没有任何连接的记录。表2中也是一样,表3中的一些记录没有连接的记录

对于第二种情况,脚本工作正常。我得到这样的东西: 1->2->空。但在第一种情况下,当数据看起来类似于:1->empty->empty时,我得到的错误是表3不存在

是否有任何解决方案可以跳过此错误,并获得格式非常好的关联表作为返回到我的查询

$options = array(
        'conditions' => array(
            'Table1.id' => $table1_ids
        ),
        'contain' => array(
            'Table2' => array(
                'conditions' => array(
                    'id' => $table2_ids
                ),
                'Table3' => array(
                    'conditions' => array(
                        'date_end >' => date('Y-m-d H:i:s')
                    ),
                    'fields' => array('id'),
                ),
                'fields' => array()
            ),
        ),
        'fields' => array('id', 'name')
    );
    $this->Table1->recursive = -1;
    $table1 = $this->Table1->find('all', $options);

这并不是真正的cakephp的错,而是您不了解
包含的内容


您要查找的是,在
contain

的文档中实际上暗示了这一点,如果不查看实际执行脚本的代码,很难知道。您是如何获得这些记录的?你能分享代码吗?我添加了代码。这个问题的解决方案可能是针对表2中的每个记录,我应该检索表3中的记录。然而,这意味着要对数据库进行大量查询……奇怪的是,即使对于表1中的一些记录,其中的Table1->empty->empty,它仍然可以正常工作。我不懂CakePHP。对于小型应用程序来说,这是一个很好的框架,但对于更高级的应用程序来说,它跟不上。我不知道为什么…当我使用左连接时,我只从一个表中获取列。在DebugKit中,我可以看到用于连接的SQL查询只从一个表中检索列。为什么?好的!我发现使用连接会导致我们无法获得格式化数据,我的意思是我们在表1中有多条相同的记录:
[1]->[2][1]->[2]
CakePHP中是否有任何快速函数可以对这些数据进行排序,并将表2中所有匹配的记录分配给一个关联表:
[1]->{[2][2]}
返回的数据已格式化,只是不是以你喜欢的方式。您可以使用cake的
Hash
实用程序类的成员,也可以自己遍历它们并“修复”它们以您想要的方式显示。您能给我一些提示,我应该使用哪个Hash函数吗?我认为没有一个能解决这个问题。。。但我可能错了