sql >> データベース >  >> NoSQL >> MongoDB

パラメータの値をfindOneBySymfonyリポジトリに渡すことができません

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



    1. StackExchangeRedisChannelPrefixがキーをスコープしない

    2. MongoDB複合インデックス-ソート順は重要ですか?

    3. MongoDB$gtアグリゲーションパイプラインオペレーター

    4. Spring Data MongoDB:集約フレームワーク-ネストされたプロパティで並べ替えると無効な参照がスローされます