Em seu último exemplo de código, qual é o tipo do
$user
variável? Suponho que possa ser uma string se for um parâmetro de roteamento e vir do URI. Você pode usar var_dump()
para obter o tipo e o valor de uma só vez. Com base em um comentário anterior, você disse que o documento Scripts tinha os seguintes campos:
- _id
- nome (sequência)
- descrição (sequência)
- índice (inteiro)
- user_id (inteiro)
Se o
index
campo em seu documento MongoDB for um número inteiro, você precisará usar um número inteiro na consulta. Por exemplo, o findOneByIndex('1')
não corresponderá a um documento com inteiro 1
em seu campo. Uma prática recomendada aqui é cast
seus valores para o tipo apropriado antes de consultar. Também pode ser melhor parar de confiar nos métodos mágicos do DocumentRepository e definir explicitamente seu próprio findBy
métodos, que fazem o casting internamente. Então, seu controlador pode passar uma string numérica diretamente de um parâmetro de roteamento ou solicitação e não precisa se preocupar em fazer o cast inteiro por conta própria. Além disso, para comentar sobre seu exemplo de código original:
$script = $repository->findOneByIndex($user);
Isso foi para o padrão de roteamento
platform/designing/users/{user}/showuser
. Você disse que isso não conseguiu encontrar um resultado. Presumo que o $user
argumento para seu controlador é um ID de usuário. Se for esse o caso, por que você estava consultando o index
campo em vez de user_id
?