zend框架3,学说2
/**
* @ORMEntity
* @ORMTable(name="object")
*/
class Object
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(name="id")
*/
protected $id;
/**
* @ORMOneToOne(targetEntity="..Host", inversedBy="object")
* @ORMJoinColumn(name="ip", referencedColumnName="IP")
*/
protected $host;
}
/**
* @ORMEntity
* @ORMTable(name="host")
*/
class Host
{
/**
* @ORMId
* @ORMColumn(name="IP")
*/
protected $ip;
/**
* @ORMOneToOne(targetEntity="..Object", mappedBy="host")
* @ORMJoinColumn(name="IP", referencedColumnName="ip")
*/
protected $object;
}
我有一个错误:
错误" object的主密钥ID缺少值"。
为什么?它似乎是根据示例> 5.3进行的。站点学说的一对一的双向
您传递给joinColumn的参数不正确。您可以在此处查看Doc中的Doc。
尝试这样:
// For Object class:
// @ORMJoinColumn(name="host_ip", referencedColumnName="ip")
// For Host class
// @ORMJoinColumn(name="object_id", referencedColumnName="id")
除此之外:OneTo酮注释中不支持MAPAPEDBY。您可以使用目标态度和反转,但不能使用MAPAPPYBY。
另一方面,使IP成为主要密钥似乎是错误的。您应该有一个自动生成的主ID来进行主机,并使用它来连接实体。您仍然可以将IP字段设置为唯一,因此您不会重复。另外,您没有其他字段,甚至可以将IP放入对象类中。
另外,我不建议将对象用作您的班级名称。太一般了。