La Doctrine findOneBy méthode ne fonctionne pas
Je suis la création de petites applications avec seulement deux entités, de Commande et d'Expédition.
L'Envoi d'une entité est comme suit: (méthodes supprimé le garder court)
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $username
*
* @ORM\Column(name="username", type="string", length=255)
*/
private $username;
/**
* @var string $password
*
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* @var integer $order_id
*
* @ORM\Column(name="order_id", type="integer")
*/
private $order_id;
/**
* @var smallint $payment_type
*
* @ORM\Column(name="payment_type", type="smallint")
*/
private $payment_type;
Dans mon contrôleur, je suis en train de requête à l'aide de la order_id
mais mon findOneByOrderId
méthode ne fonctionne pas.
$orderExists = $this->getDoctrine()
->getRepository('ShipBundle:Shipment')
->findOneByOrderId($orderId);
var_dump($orderExists); die();
L'erreur que j'obtiens est:
Entity 'ShipBundle\Entity\Shipment' has no field 'orderId'. You can therefore not call 'findOneByOrderId' on the entities' repository.
Si je ne me trompe pas, la Doctrine find
méthodes de rejoindre les variables à des traits de soulignement et de tirer profit d'eux. Ce que je fais mal?
Ne pourrait-il pas être findOneById() alors?
Avez-vous un getter pour order_id? Puisque c'est une propriété privée si vous n'avez pas un getOrderId() la méthode, vous ne serez pas en mesure d'y accéder
Merci pour la réponse. J'ai tous les getter setter. Je n'ai pas posté de garder la question à court. J'ai mentionné que, dans la question.
Non, je ne pense pas ainsi. findOneById serait pour l'interrogation par id pas order_id.
essayez ->findOneBy('n ° '=> $n ° de commande);
Avez-vous un getter pour order_id? Puisque c'est une propriété privée si vous n'avez pas un getOrderId() la méthode, vous ne serez pas en mesure d'y accéder
Merci pour la réponse. J'ai tous les getter setter. Je n'ai pas posté de garder la question à court. J'ai mentionné que, dans la question.
Non, je ne pense pas ainsi. findOneById serait pour l'interrogation par id pas order_id.
essayez ->findOneBy('n ° '=> $n ° de commande);
OriginalL'auteur Aayush | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à résoudre le problème avec l'indice de pomaxa et Doctrine2 de la documentation.
Le bon code serait:
expliqué à: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#by-simple-conditions
Merci à tous pour l'aide. Je l'apprécie.
OriginalL'auteur Aayush
Vous pouvez utiliser les fonctions intégrées de la relation capacités de Doctrine2 au lieu d'utiliser un id de commande dans votre entité Expédition manuellement
De cette façon, vous aurait une relation Doctrine est conscient.
Regardez ici: http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html
OriginalL'auteur player-one
Problème dans cette ligne
Utiliser
C'est ok. Pour la db, vous aurez order_id.
OriginalL'auteur Taras Hanych
Juste pour préciser, la raison de l'erreur que vous avez besoin pour passer un Tableau dans le
findOneBy();
C'est faux: ,
->findOneByOrderId($orderId);
dansUn tableau doivent être transmises.
array('order_id' => $orderId)
OU l'ABRÉVIATION
['order_id'=> $orderId]
tant que vous êtes en PHP >= 5.4OriginalL'auteur luminol