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


¿How to avoid record from a table in pagination if this record is not present in another related table? CAKEPHP

我怀疑在CakePHP中做分页。

好吧,我会尽量简洁。

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

我还需要从第一个表中获取记录,但按第二个表中的记录排序。没关系。问题是:我不想进入分页,来自第一个表(我分页它(的记录,这些记录在第三个表中不存在。

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

¿我该怎么做?

我希望我解释了。

谢谢。

问候。

你想要使用的是一个计数器缓存。转到 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html 并搜索"计数器缓存",您将找到说明。

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

更新:

如果你不能使用 CakePHP 的计数器缓存,那么你应该使用虚拟字段模拟计数器缓存的行为 - 参见 http://book.cakephp.org/2.0/en/models/virtual-fields.html