0

我正在尝试对查询进行菊花链matching()调用,或者找到一种等效的方法来实现相同的结果。具体来说,这就是我想做的事情:

$matchedItemVersion = $this->ItemVersions->find()
    ->where(['version' => $verion])
    ->matching('Items', function($q) use ($ipnCore) {
        return $q->where(['ipn_core' => $ipnCore]);
    })
    ->matching('Items.ItemTypes.ItemSuperGroups', function($q) use ($itemSuperGroupName) {
        return $q->where(['name' => $itemSuperGroupName]);
    })
    ->first()
    ->toArray();

这将让我通过关联模型上的两个条件过滤我的 ItemVersions 结果。但是,现在,第二次matching()调用基本上覆盖了第一次,所以第一次matching()调用对查询没有影响。

我们知道你不能链接 amatching()和 a contain()( https://github.com/cakephp/cakephp/issues/5109 ),但是有没有办法用 来做到这一点matching(),或者有办法得到相同的结果?

感谢帮助。

4

0 回答 0