【发布时间】:2012-08-09 13:59:20
【问题描述】:
我正在创建只有两个实体 Order 和 Shipment 的小型应用程序。
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;
在我的控制器中,我尝试使用order_id 进行查询,但我的findOneByOrderId 方法不起作用。
$orderExists = $this->getDoctrine()
->getRepository('ShipBundle:Shipment')
->findOneByOrderId($orderId);
var_dump($orderExists); die();
我得到的错误是:
Entity 'ShipBundle\Entity\Shipment' has no field 'orderId'. You can therefore not call 'findOneByOrderId' on the entities' repository.
如果我没记错的话,Doctrine find 方法在下划线处加入变量并将它们大写。我做错了什么?
【问题讨论】:
-
那不应该是 findOneById() 吗?
-
你有order_id的getter吗?由于这是一个私有属性,如果您没有 getOrderId() 方法,您将无法访问它
-
@Carlos 感谢您的回复。我有所有的 getter setter 方法。我没有发布它们以保持问题简短。我在问题中提到了这一点。
-
@Cups 不,我不这么认为。 findOneById 将用于通过 id 而不是 order_id 进行查询。
-
尝试->findOneBy('orderId'=> $orderId);
标签: php orm symfony doctrine-orm