web-dev-qa-db-ja.com

ビューは、alter by add BYBY関数FIELD()を照会します。

次の式をビュークエリに追加する方法がわかりません。

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式を追加するにはどうすればよいですか?

1
mgoubert

ここに同様の答えがあります: 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');
_
2
Rumyana Ruseva