Parse.com в PHP SDK для вам отношения пользователей к объекту


Я сохраняю пользовательские "лайки"как отношение к объектам Post, как и в документах.

$user = ParseUser::getCurrentUser();    
$post= new ParseObject("Post", $the_post_id);
$relation = $user->getRelation("likes");
$relation->add($post);
$user->save();

Пока это работает нормально.

Теперь мне интересно, как запросить сообщения, а также подсчитать, сколько пользователей понравилось каждому сообщению. Я не хочу запускать отдельные запросы в цикле для каждого сообщения.

Я также хотел бы знать, нравится ли текущему пользователю каждый пост в запросе. Опять же, определенно не нужно делать несколько запросов в цикле.

Это ли возможно?

Мой Текущий Запрос Post:

$query = new ParseQuery("Post");
$posts = $query->find();
1 3

1 ответ:

[...] потяните подсчет, сколько пользователей понравилось каждый пост [...]

Создайте полеlikes counter в классе Post и обновляйте его каждый раз, когда сообщение добавляется/удаляется в отношении "likes". Вы найдете это предложение в нескольких местах (например, здесь и здесь).
Используйте метод Parseincrement (с положительным или отрицательным значением) для атомарного обновления счетчика.

[...] знать, нравится ли текущему пользователю каждый пост [...]

Это трудно без нескольких запросов. Вы знаете, что легко получить сообщения, понравившиеся пользователю:

$postsLiked = $relation->getQuery()->find();

Вы также можете получить сообщения, которые не являются в отношениях "нравится" с пользователем. Вы можете попробовать использовать такую информацию, но вам придется согласиться с уменьшением простоты вашего сценария, а также с возможным уровнем неточности (помните, что вы не можете получить более 1000 результатов с помощью одного запроса синтаксического анализа). Вы можете найти его предпочтительно показывать информацию только в виде подробностей в виде одной записи (информация также может быть динамически извлечена с помощью AJAX при входном событии, связанном с одной записью записи, или в зависимости от текущей видимости записей в окне просмотра).