Я пытаюсь присоединиться к рейтингам Fivestar для каждого узла, чтобы сортировать их по рейтингу.Проблема заключается в том, что значения Fivestar, которые я запрашиваю, хранятся в голосованияapi_cache в виде нескольких строк на узел (подсчет голосов и средний рейтинг), поэтому я хочу сделать следующее:
...
LEFT JOIN votingapi_cache fivestar
ON fivestar.entity_id = node.nid
AND fivestar.function = 'average'
Я пробовалследующий код, но проблема в том, что проверка «fivestar.function = 'average” "добавлена в предложение where, которое исключает все узлы, у которых нет голосов.
$query->leftjoin('votingapi_cache', 'fivestar', 'fivestar.entity_id = n.nid');
$query->condition('fivestar.function', 'average', '=');
$query->addField('fivestar', 'value', 'average_rating');
Хорошо,в первый раз, когда я попробовал это, я, должно быть, сделал что-то не так, но вот решение:
$query->leftjoin('votingapi_cache', 'fivestar', "fivestar.entity_id = n.nid AND fivestar.function = 'average'");