Drupal 7 - EntityFieldQuery - 与mysql FIELD(...)一起用于自定义顺序

时间:2014-03-05 12:00:42

标签: mysql drupal-7

我很熟悉Drupal的db api,我正在使用一些遗留代码。我正在尝试使用自定义列表对我的 EntityFieldQuery 选择的节点进行排序。

MYSQL等价物:

...
ORDER BY FIELD(tid, '44', '47', '21', '3' '36');

我似乎无法弄清楚如何使用EntityFieldQuery来实现它。我以为我可以用fieldOrderBy(...)。 propertyOrderBy(...,...)失败了。

非常感谢帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您应该能够通过将完整字段表达式作为要排序的列来使用propertyOrderBy。像这样:

$query->propertyOrderBy("FIELD(tid, '44', '47', '21', '3' '36')", "asc");

我知道,如果Drupal确定它应该调用propertyQuery,那么这将失败,因为它会想要将基表附加到排序列。

如果这不起作用,您可能只是构建自己的原始查询以获取所需的数据。