CakePHP 3 сортировать по глубоко связанной таблице - PullRequest
0 голосов
/ 02 мая 2018

Мы не можем отсортировать наши данные по глубоко связанным данным

Несмотря на то, что таблицы определены с использованием ассоциативных связей hasTne и hasOne, тип CakePHP использует подзапросы на глубоких уровнях для получения данных, а поля, которые нам нужно упорядочить, отсутствуют в основном запросе

Пример:

Users.Articles.Posts

Если я попытаюсь сделать заказ по Articles.id, он будет работать нормально, потому что Articles присутствует как ВНУТРЕННЕЕ СОЕДИНЕНИЕ в запросе.

Но при заказе с Users.Articles.Posts.id это не работает, потому что сообщения извлекаются с использованием отдельного запроса

Есть ли другой способ заставить CakePHP извлечь все данные в одном запросе?

1 Ответ

0 голосов
/ 02 мая 2018

Переосмыслите, как вы опрашиваете свои столы ....

Когда вы делаете Users.Articles.Posts, вы в основном говорите, что я интересуюсь прежде всего пользователями и некоторыми дополнительными связанными данными. Таким образом, вы можете легко отсортировать Users, потому что вы получите наборы пользователей.

Но вы хотите отсортировать по Posts.id, тогда, возможно, вам нужно переосмыслить свой запрос и то, что важно для вас. И вместо этого сделайте запрос к таблице «Посты», например Posts.Articles.Users (при условии, что у вас есть правильные связи, которые также ссылаются). Если вы сделаете это, вам, возможно, придется использовать matching, если вам также необходимо применить фильтры к своим пользователям и статьям.

Коллекции сущностей

Итак, решите, что является вашим приоритетом, и переформулируйте ваш запрос соответствующим образом, и CakePHP поможет. Но подумайте с точки зрения коллекций объектов, а не с точки зрения «как заставить Cake генерировать этот SQL, который у меня есть в голове». Так будет проще использовать ORM Cake.

Удачи!

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