CakePHP 2.x:使用HABTM和belongsTo的查询太多

时间:2015-01-11 22:21:04

标签: php mysql cakephp

我有这些表格:

Tables and foreign keys

在CakePHP中,我有这些模型:

  • 作者 hasMany 发布

  • 发布所属作者

  • 发布 hasAndBelongsToMany 标记

  • 标记 hasAndBelongsToMany 发布

我想要的是:

  

对于每个标记,请列出其作者的所有相关帖子。

所以我将能够做到这一点,例如:

  • TAG1
    • post1:by author1
    • post2:by author2
  • TAG2
    • post3:by author3
  • TAG3
    • post4:by author4

所有模型都使用Containable行为:

class AppModel extends Model
{
    public $recursive = -1;
    public $actsAs = array('Containable');
}

搜索:

$tags = $this->Tag->find('all', array(
    'contain' => array(
        'Post' => array('Author')
    )
));

我得到了很好的结果:

Good results

但是这种搜索会产生太多的SQL查询:

Too many queries

我不明白为什么CakePHP不使用SQL连接。我试过没有Containable和递归= 2,并且查询与Containable一样多。

我的问题

如何使用最少的SQL查询获得与上述图像相同的结果?目前,如果有大量数据,则可能有超过100个SQL查询。

很抱歉发布了很长的帖子和语言错误(我是法语),并提前感谢你。

0 个答案:

没有答案