cakePHP - 如何获取相关模型的项目数?

标签 cakephp count model-associations

型号为:storesproduct ,它们通过以下方式关联:

var $belongsTo = array(
  'Store' => array(
    'className' => 'Store',
    'foreignKey' => 'store_id'
        ))

var $hasMany = array(
  'Product' => array(
'className' => 'Product',
'foreignKey' => 'store_id'
    ))

我想获得所有商店的列表以及他们拥有的产品数量。我应该如何修改电话:$this->Store->find('all', array(<..some conditions..>))返回那种类型的数据?

最佳答案

一种方法是使用 Cake 的内置 counterCache 您的协会中的选项。这可能是性能最高的选项,尽管它确实需要向表中添加一个字段。

在您的 stores表,添加 INT字段调用 product_count
在您的 Product型号添加 counterCache您协会的选项:

var $belongsTo = array(
    'Store' => array(
    'className' => 'Store',
    'foreignKey' => 'store_id',
    'counterCache' => true
 ));

无论何时添加或删除 Product记录,它会自动更新product_count关联字段 Store记录,以便无需更改您的 find操作。

请注意,如果您选择此路线,您将需要手动更新 product_count初始值的字段是正确的,因为它只在添加/删除操作后更新。

关于cakePHP - 如何获取相关模型的项目数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173988/

相关文章:

ruby-on-rails-3 - Rails 3.2.1嵌套形式和accepts_nested_attributes_for返回: :Client(xxxxx) expected,得到数组(xxxxx)”

cakephp - Cakephp 翻译行为的默认行为不起作用

c# - Linq 连接、分组、计数(其中计数大于值)

mysql选择值出现的记录

sql - Oracle/SQL - 组合来自 'unrelated' 不相关表的计数

uml - 历史关联模式

cakephp - 在 cakephp 中创建左连接

php - CakePHP 和套接字

cakephp 3 添加条件验证

java - 通过 JPA 注释的聚合关系