我不确定如何在子表上应用分组依据。
用户有很多文章。
以下将导致错误:
$UsersTable= $this->getTableLocator()->get('Users');
$query = $UsersTable->find();
$query->contain(["Articles"]);
$query->group(["Articles.type"]); // ERROR
添加匹配项可以解决此问题,但是它应该如何工作?
$UsersTable= $this->getTableLocator()->get('Users');
$query = $UsersTable->find();
$query->contain(["Articles"]);
// just calling matching without any condition
$query->matching(
"Articles", function($q) {
return $q;
}
);
$query->group(["Articles.type"]); // WORKS!
在不依靠匹配的情况下,还有其他合适的方法来使它工作吗?
答案 0 :(得分:0)
首先,您必须通过Users
之类的联接方法之一在Articles
和matching
之间联接,然后才能使用group()
方法
contain()
并非在所有情况下都使用联接,尤其是对于您的关系:hasMany
mysql的group by
需要这些表之间的连接才能工作