如何在db_select上对leftjoin应用多个条件?

Som*_*gOn 3 drupal-7

我正在尝试加入每个节点的Fivestar评级,以便我可以按评级对它们进行排序.问题是我查询的Fivestar值存储在votingapi_cache中,每个节点有多行(投票数和平均评级),所以我想做以下事情:

...
LEFT JOIN votingapi_cache fivestar
ON fivestar.entity_id = node.nid
AND fivestar.function = 'average'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下代码,但问题是检查"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');
Run Code Online (Sandbox Code Playgroud)

好的,我第一次尝试这个我一定做错了,但这是解决方案:

$query->leftjoin('votingapi_cache', 'fivestar', "fivestar.entity_id = n.nid AND fivestar.function = 'average'");
Run Code Online (Sandbox Code Playgroud)

Som*_*gOn 10

好的,我第一次尝试这个我一定做错了,但这是解决方案:

$query->leftjoin('votingapi_cache', 'fivestar', "fivestar.entity_id = n.nid AND fivestar.function = 'average'");
Run Code Online (Sandbox Code Playgroud)