我有两个差异表,如下所示:
用户和帖子
需要按用户表格顺序列出的数据表
关系定义为:
User Model:
public $hasMany = array('Post');
Post Model
Public $belongsTo = array('User');
答案 0 :(得分:2)
counterCache - 缓存您的计数()
此功能可帮助您缓存相关数据的计数。该模型本身不会通过 find('count')手动计算记录,而是跟踪对相关 $ hasMany 模型的任何添加/删除,并增加/减少专用整数字段在父模型表中。
该字段的名称由单数型号名称后跟下划线和单词“count”组成:
my_model_count
假设您有一个名为 ImageComment 的模型和一个名为图像的模型,您可以在图像表中添加一个新的INT字段并将其命名为 image_comment_count 。
添加了计数器字段后,您就可以了。通过添加 counterCache 键激活关联中的反缓存,并将值设置为 true :
<?php
class Image extends AppModel {
public $belongsTo = array(
'ImageAlbum' => array('counterCache' => true)
);
}
从现在开始,每次添加或删除与 ImageAlbum 关联的图片时, image_count 中的数字都会自动调整。
您还可以指定 counterScope 。它允许您指定一个简单的条件,告诉模型何时更新(或不在时,取决于您如何看待它)计数器值。
使用我们的Image模型示例,我们可以这样指定:
<?php
class Image extends AppModel {
public $belongsTo = array(
'ImageAlbum' => array(
'counterCache' => true,
'counterScope' => array('Image.active' => 1) // only count if "Image" is active = 1
));
}