¿;如果另一个相关表中不存在该记录,如何在分页时避免该表中的记录?CAKEPHP

¿;如果另一个相关表中不存在该记录,如何在分页时避免该表中的记录?CAKEPHP,php,cakephp,pagination,relationship,Php,Cakephp,Pagination,Relationship,我怀疑用CakePHP进行分页 好吧,我会尽量简明扼要 我有三个表,一个表是我分页的(第一个表),另一个表(第二个表)依赖于这个表(第一个表有FK到第二个表),以及最重要的第三个表,它有FK到第一个表。所以:第三张桌子->第一张桌子->第二张桌子。 我从他的控制器对第一个表(模型)进行分页,到目前为止一切正常,分页列出了表bd中的所有记录,没有问题 我还需要从第1个表中获取记录,但按第2个表中的记录排序。没问题问题在于:我不想在分页中获取第1个表(我对其进行分页)中不在第3个表中的记录 问题是C

我怀疑用CakePHP进行分页

好吧,我会尽量简明扼要

我有三个表,一个表是我分页的(第一个表),另一个表(第二个表)依赖于这个表(第一个表有FK到第二个表),以及最重要的第三个表,它有FK到第一个表。所以:第三张桌子->第一张桌子->第二张桌子。 我从他的控制器对第一个表(模型)进行分页,到目前为止一切正常,分页列出了表bd中的所有记录,没有问题

我还需要从第1个表中获取记录,但按第2个表中的记录排序。没问题问题在于:我不想在分页中获取第1个表(我对其进行分页)中不在第3个表中的记录

问题是CAKEPHP首先进行查询,从第一个表+第二个表获取记录。在此之后,它根据从第一次查询中获得的记录(PK)从第三个表中获取记录,所以我不能说:不从第三个表中不存在的第一个表中获取记录

我该怎么做

我希望我能解释清楚

多谢各位


注意。

您要使用的是计数器缓存。转到并搜索“counterCache”,您将找到说明

基本上,您希望在模型1中实现一个“计数器缓存”字段,该字段自动记录模型3中链接记录的数量。然后,要从模型1中排除在模型3中没有相关记录的记录,只需添加分页条件,说明计数器缓存字段必须大于0

更新:


如果您不能使用CakePHP的计数器缓存,那么您应该使用虚拟字段模拟计数器缓存的行为-请参见

我将尝试一下,我告诉您。谢谢好的,我想我明白什么是计数器缓存。问题是,正如我所读到的,当通过CakePHP执行插入/删除操作时,计数器缓存字段会增加或减少,对吗?所以,这会有点“不稳定”或不真实,你不这么认为吗?如果我在数据库中做一个操作,例如,从一个移动应用程序,这个字段将完全不真实。你怎么认为?谢谢。假设CakePHP是唯一访问数据库的东西,那么计数器缓存是稳定的。如果您有一个移动应用程序,那么它也应该通过CakePHP API访问您的数据库,而不是直接访问。若你们这样做了,计数器缓存应该还是可以的。是的,通过CakePHP API从移动应用程序访问数据库是合适的,但应用程序是通过PHP脚本实现的,它们已经太大了。此外,移动应用程序。这不是我的事。我有一个想法,我可以从“模型1”中找到“模型3”的FKs,然后在“条件”中将它们作为参数进行分页传递。我认为可以,但可能太长了执行时间(当表大量增长时)?请参阅我的更新答案。您应该使用虚拟字段-