我想要利用一个预先存在的 Oracle 数据库。
为此,我创建了 2 个类,并用多对一和一对多进行映射。但有些元素在第一类中与第二类中没有对应关系,但 id 存在。它不会返回任何错误。
我希望它给我发送一个空值。如何做到这一点?
class Fact
{
/**
*
* @ORM\OneToMany(targetEntity="present\UserBundle\Entity\March",mappedBy="fact", cascade={"persist","remove"})
*/
private $march;
}
class March
{
...
/*
* @var \present\PublishBundle\Entity\image
* @ORM\ManyToOne(targetEntity="present\UserBundle\Entity\fact",inversedBy="march", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id",referencedColumnName="id")
* })
* })
*/
private $facture;
}
错误
未找到 ID id(0) 的“present\UserBundle\Entity\Client”类型的实体
谢谢你
我还没有测试你的代码,但我认为你的错误必须执行你的 JoinColumn 声明:
@ORM\JoinColumn(name="id",referencedColumnName="id")
在文档here中,它说 name 属性将为您的关系定义列的名称。 但我想这里的“id”也指的是你的主键。
要解决此问题,请尝试将 name="id" 更改为 name="march_id",或删除 JoinColumn。
编辑:我已经阅读了一些快速错误,没有看到它引用客户端实体,你也可以显示与此关系相关的代码吗?
我知道这个讨论已经很晚了,但我找到了一个可能的解决方案。可以使用 PHP 的异常来处理此类情况。
就我而言,我有一个与零个或一个地址相关的客户表。所以,我才能拥有这样的幸福之路:
$streetName = $customer->getAddress()->getStreetName();
echo $streetName; // Baker Street
或者可能会抛出异常,所以解决方法是这样的:
use Doctrine\ORM\EntityNotFoundException;
try {
$streetName = $customer->getAddress()->getStreetName();
} catch (EntityNotFoundException $e) {
$streetName = 'No address provided!';
}