サイズがゼロより大きい配列「いいね」を持つすべてのドキュメントを受け取りたいと思います。->size() メソッドを使用して特定のサイズの配列を取得する例を見ました。
$qb = $dm->createQueryBuilder('Article')->field('comments')->size(0);
ゼロ以外のサイズの配列を取得しないようにするためのオプションはありますか?
ありがとうございました!
サイズがゼロより大きい配列「いいね」を持つすべてのドキュメントを受け取りたいと思います。->size() メソッドを使用して特定のサイズの配列を取得する例を見ました。
$qb = $dm->createQueryBuilder('Article')->field('comments')->size(0);
ゼロ以外のサイズの配列を取得しないようにするためのオプションはありますか?
ありがとうございました!
特定の正の整数を に渡すことはできsize
ますが、それを使用して範囲を照会することはできません。これは Doctrine の制限ではなく、MongoDB の制限です。$sizeのドキュメントには次のように書かれています。
$size は値の範囲を受け入れません。要素数が異なるフィールドに基づいてドキュメントを選択するには、フィールドに要素を追加するときにインクリメントするカウンタ フィールドを作成します。
これを行うには、$comments_count
@Int
Article にフィールドを追加し、a) 変更するドキュメント メソッド内、$comments
または b) で注釈が付けられたドキュメント メソッド内のいずれかでフィールドを更新します@PreUpdate
。
別の (非効率的な) オプションはwhere
、javascript 式で使用することです。
$where = "function() { return this.comments && this.comments.length > 0; }";
$qb = $dm->createQueryBuilder('Article')->field('comments')->where($where);