MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Não é possível passar o valor do parâmetro para o repositório findOneBy Symfony


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 ?