最後のコード例では、$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の代わりにフィールド ?