OneToOne Reference 的 Symfony2 结果为空
Symfony2 Result is null by OneToOne Reference
我是 Symfony2 的初学者。
我的目标是将所有旧的 Intranet 工具从用 PHP 4 编写的有缺陷的自由式代码转换为面向对象的现代代码。目前我在使用 OneToOne
映射时遇到 Doctrine 问题。
我有一家 table 公司,其中包含一个名为 extent_id
的列,它是对 table company_extent
.
的引用
我现在等待:在我的 Company
对象中引用了正确的 company_extent
。
这是我试过的:
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @OneToOne(targetEntity="CompanyExtent", inversedBy="company")
* @JoinColumn(name="extent_id", referencedColumnName="id")
**/
private $extent;
}
class CompanyExtent
{
/**
* @ORM\OneToOne(targetEntity="Company", mappedBy="extent")
*/
private $company;
}
但是,如果我转储我的公司对象,我会得到:
object(Dsa\ServiceMeetingBundle\Entity\Company)[274]
protected 'extentId' => int 1
private 'extent' => null
protected 'stretchId' => int 1
您必须为您创建的每个实体添加一个 "ID" 属性。
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @OneToOne(targetEntity="CompanyExtent", inversedBy="company")
* @JoinColumn(name="extent_id", referencedColumnName="id")
**/
private $extent;
}
在您的注释中 @JoinColumn(name="extent_id", referencedColumnName="id")
您使用了不存在的引用。
class CompanyExtent
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Company", mappedBy="extent")
*/
private $company;
}
正如@cerad 所提到的,我建议您阅读 Doctrine 的对象关系管理器。这是开发中非常重要的一部分。
我是 Symfony2 的初学者。
我的目标是将所有旧的 Intranet 工具从用 PHP 4 编写的有缺陷的自由式代码转换为面向对象的现代代码。目前我在使用 OneToOne
映射时遇到 Doctrine 问题。
我有一家 table 公司,其中包含一个名为 extent_id
的列,它是对 table company_extent
.
我现在等待:在我的 Company
对象中引用了正确的 company_extent
。
这是我试过的:
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @OneToOne(targetEntity="CompanyExtent", inversedBy="company")
* @JoinColumn(name="extent_id", referencedColumnName="id")
**/
private $extent;
}
class CompanyExtent
{
/**
* @ORM\OneToOne(targetEntity="Company", mappedBy="extent")
*/
private $company;
}
但是,如果我转储我的公司对象,我会得到:
object(Dsa\ServiceMeetingBundle\Entity\Company)[274]
protected 'extentId' => int 1
private 'extent' => null
protected 'stretchId' => int 1
您必须为您创建的每个实体添加一个 "ID" 属性。
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @OneToOne(targetEntity="CompanyExtent", inversedBy="company")
* @JoinColumn(name="extent_id", referencedColumnName="id")
**/
private $extent;
}
在您的注释中 @JoinColumn(name="extent_id", referencedColumnName="id")
您使用了不存在的引用。
class CompanyExtent
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Company", mappedBy="extent")
*/
private $company;
}
正如@cerad 所提到的,我建议您阅读 Doctrine 的对象关系管理器。这是开发中非常重要的一部分。