Nel tuo ultimo esempio di codice, qual è il tipo di $user variabile? Presumo che potrebbe essere una stringa se si tratta di un parametro di routing e proveniente dall'URI. Puoi usare var_dump() per ottenere il tipo e il valore in un colpo solo.
Sulla base di un commento precedente, hai affermato che il documento Script aveva i seguenti campi:
- _id
- nome (stringa)
- descrizione (stringa)
- indice (numero intero)
- id_utente (numero intero)
Se l'index campo nel tuo documento MongoDB è un numero intero, dovrai utilizzare un numero intero nella query. Ad esempio, il findOneByIndex('1') non corrisponderà a un documento con numero intero 1 nel suo campo. Una procedura consigliata qui è quella di cast
i valori al tipo appropriato prima di eseguire query. Potrebbe anche essere meglio smettere di fare affidamento sui metodi magici di DocumentRepository e definire esplicitamente il proprio findBy metodi, che effettuano la colata internamente. Quindi, il tuo controller può passare una stringa numerica direttamente da un parametro di instradamento o richiesta e non deve preoccuparsi di eseguire il cast dell'intero da solo.
Inoltre, per commentare il tuo esempio di codice originale:
$script = $repository->findOneByIndex($user);
Questo era per il modello di instradamento platform/designing/users/{user}/showuser . Hai detto che questo non è riuscito a trovare un risultato. Presumo il $user argomento per il tuo controller è un ID utente. In tal caso, perché stavi interrogando sull'index campo invece di user_id ?