CakePHP: группировка по столбцу дочерней таблицы - PullRequest
0 голосов
/ 15 апреля 2019

Я не уверен в правильном способе применения group by к дочерней таблице.

У пользователей много статей.

Ниже приведёт к ошибке:

$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!

Нет ли другого правильного способа заставить это работать, не полагаясь на сопоставление?

1 Ответ

0 голосов
/ 16 апреля 2019

сначала вы должны соединиться между Users и Articles одним из методов соединения, таких как matching, ... затем вы можете использовать group() метод

contain() не использует соединениедля всех случаев, особенно для ваших отношений: hasMany

mysql's group by требуется соединение между этими таблицами для работы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...