php - 教义 findOneBy 方法不起作用

标签 php orm symfony doctrine-orm

我正在创建只有两个实体的小型应用程序,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;

在我的 Controller 中,我尝试使用 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 方法在下划线处加入变量并将它们大写。我做错了什么?

最佳答案

根据 pomaxa 和 Doctrine2 文档的提示,我设法解决了这个问题。

正确的代码是:

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

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

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

关于php - 教义 findOneBy 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11932618/

相关文章:

forms - Symfony2 : Difference between those metodology "Embedded Form" and "Data Transformer"

php - 加载代理模块时,Docker 中的 Apache 2.4 httpd 不会启动

php - Woocommerce:一次删除所有表单标签

php - 使用 PHP 检测日历事件重叠冲突

orm - 存储库模式会杀死ORM吗?

php - Symfony 3 在 FormType 中注入(inject)容器

php - 无法发送 2 个字符的输入

javascript - Bookshelf.js/Knex.js 嵌套在单个查询中的位置

django - 如何使用中间模型批量更新 django M2M 关系?

forms - Symfony2 - 为什么隐藏字段中的整数值不被识别为整数?