所以我有一个User表和一个带有User hasMany Histories的History表,我正在尝试在user表上实现分页.
我的问题是我有搜索,一些可以搜索的东西是历史表中的东西.有没有办法根据hasMany关联的表中的数据过滤分页结果?Containable,最初看起来像一个解决方案,允许这样的过滤,但只在检索相关数据,而不是记录本身(除非我遗漏了什么?)
有没有人必须解决这个问题?
由于它是一个hasMany关系,这意味着Cake需要进行2次单独的查询:1在users表上,1在historyies表上检索所有关联.由于在第二个查询之前未检索历史数据,因此无法通过历史模型中找到的字段的WHERE条件筛选第一个查询.
要解决此问题,您可以执行以下两项操作之一:
使用Containable对History进行分页(因为History属于User,意味着只执行1个查询).
以您正在进行的方式对User进行分页,除了对History执行ad-hoc连接,使其不再是hasMany关系.
例如:
$this->User->bindModel(array('hasOne' => array('History')));
$this->paginate['User']['contain'][] = 'History';
$this->paginate('User', array('History.some_field' => 'some_value'));
Run Code Online (Sandbox Code Playgroud)