最後のコード例では、$user
のタイプは何ですか 変数?ルーティングパラメータであり、URIからのものである場合は、文字列である可能性があると思います。 var_dump()
を使用できます タイプと値をワンショットで取得します。
以前のコメントに基づいて、スクリプトドキュメントには次のフィールドがあるとおっしゃいました。
- _id
- 名前(文字列)
- 説明(文字列)
- インデックス(整数)
- user_id(整数)
index
の場合 MongoDBドキュメントのフィールドは整数であるため、クエリでは整数を使用する必要があります。たとえば、findOneByIndex('1')
整数の1
のドキュメントとは一致しません その分野で。ここでのベストプラクティスは、キャストすることです。
クエリを実行する前に、値を適切なタイプに変更してください。また、魔法のDocumentRepositoryメソッドに依存するのをやめ、独自のfindBy
を明示的に定義することもお勧めします。 内部でキャストを行うメソッド。そうすれば、コントローラーはルーティングまたはリクエストパラメーターから直接数値文字列を渡すことができ、それ自体で整数キャストを行うことを心配する必要はありません。
また、元のコード例にコメントするには:
$script = $repository->findOneByIndex($user);
これは、ルーティングパターンplatform/designing/users/{user}/showuser
用でした。 。あなたはこれが結果を見つけることができなかったと言いました。 $user
を想定しています コントローラへの引数はユーザーIDです。その場合、なぜindex
でクエリを実行したのですか。 user_id
の代わりにフィールド ?