Doctrine findOneBy方法不起作用

Aay*_*ush 7 php orm symfony doctrine-orm

我正在创建只有两个实体的订单和发货的小应用程序.

Shipment实体如下:(删除方法以保持简短)

/**
 * @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;
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我试图使用order_id但我的findOneByOrderId方法无法查询.

$orderExists = $this->getDoctrine()
                ->getRepository('ShipBundle:Shipment')
                ->findOneByOrderId($orderId);

var_dump($orderExists);     die();
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Entity 'ShipBundle\Entity\Shipment' has no field 'orderId'. You can therefore not call 'findOneByOrderId' on the entities' repository.
Run Code Online (Sandbox Code Playgroud)

如果我没有错,则Doctrine find方法将下划线中的变量连接起来并将它们大写.我究竟做错了什么?

Aay*_*ush 19

我设法用pomaxa和Doctrine2文档中的提示解决了这个问题.

正确的代码是:

$orderExists = $this->getDoctrine()
                ->getRepository('ShipBundle:Shipment')
                ->findOneBy(array('order_id' => $orderId));
Run Code Online (Sandbox Code Playgroud)

解释于:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#by-simple-conditions

谢谢大家的帮助.我很感激.