次の式をビュークエリに追加する方法がわかりません。
ORDER BY FIELD(field_dataid,3,2,1,4)
QueryPluginBaseは、追加するオプションのみを提供します。
$query->addOrderBy('node_field_data', 'nid', ASC);
ただし、式を追加するオプションはありません。
Sqlインターフェースには、式を追加するオプションがあります。
$query->addExpression('FIELD(node_field_data.nid,3,2,1,4)', 'order_field');
$query->orderBy('order_field', 'ASC');
しかし、これはビュークエリオブジェクトでは機能しません。
では、ビュークエリオブジェクトにorderby式を追加するにはどうすればよいですか?
ここに同様の答えがあります: https://drupal.stackexchange.com/a/200662/79998
$query->addField()
を使用して式を追加してから_$query->orderby
_配列で追加またはシフト解除するか、直接$query->addOrderBy()
を使用して式と順序を追加します(問題がなければ)最後に追加されます。
_$query->addOrderBy(NULL, 'FIELD(node_field_data.nid,3,2,1,4)', 'ASC', 'order_field');
_