web-dev-qa-db-ja.com

クエリの影響を受ける行数を制限するにはどうすればよいですか?

Drupal 8のカスタムモジュールでは、次のコードを使用しています。

_$query = $this->connection->select('node_field_data', 'nf_data');
$result = $query->execute();
_

最初の500行を取得します。 $query->limit(50)で試しましたが、次のエラーが発生します。

未定義のメソッドDrupal\Core\Database\Driver\mysql\Select :: limit()の呼び出し

最初の500行を取得するための正しいコードは何ですか?

4
Diana
11
Kevin

$this->connection->select()から返されるオブジェクトは、拡張するクラスのオブジェクトです _\Drupal\Core\Database\Query\Select_ (エンティティクエリ用の _\Drupal\Core\Entity\Query\QueryInterface_ ではありません) )。あなたの場合、データベースエンジンとしてMySQLを使用しているので、引用したエラーが示すように、そのクラスは具体的には _\Drupal\Core\Database\Driver\mysql\Select_ です。

あなたが探しているメソッドは Select::range() です。

PagerSelectExtender::limit() と混同しています。これは、ページごとの要素数を制限するために使用され、 PagerSelectExtender クラスから実装されています。ただし、この方法を使用するには、ページャーをクエリに追加する必要があります。

2
kiamlaluno