【发布时间】:2014-01-09 06:46:17
【问题描述】:
我尝试使用鉴别器设置参考,但是当我尝试获取 miejsce 的子域时出现错误 - mysql 更新工作正常
错误是: 执行 'SELECT t0.id AS id1, t0.name AS name2, t0.rid AS rid3, t0.rid AS rid4, t0.ridType FROM mSubdomains t0 WHERE t0.rid = 时发生异常AND t0.ridType IN ()' 带参数 ["5922"]:
params 是正常的只有 miejsce.id 吗? ridType 应该是 1
当我将此查询推送到 phpmyadmin 时,我得到:
SELECT t0.id AS id1, t0.name AS name2, t0.rid AS rid3, t0.rid AS rid4, t0.ridType
FROM mSubdomains t0
WHERE t0.rid =5922
AND t0.ridType
IN ( 1 )
LIMIT 0 , 30
结果:
id1 name2 rid3 rid4 ridType
1695 test 5922 5922 1
奇怪的是 rid3 , rid4 吗?
class Miejsce
{
...
/**
* @ORM\OneToMany(targetEntity="Miejsce\DomainBundle\Entity\MiejsceSubdomain", mappedBy="miejsce", cascade={"all"})
* @var Subdomain
*/
protected $subdomain;
如果 MiejsceSubdomain 不是抽象的,我会得到错误:
MappingException:实体 'Miejsce\DomainBundle\Entity\MiejsceSubdomain' 必须是 'Miejsce\DomainBundle\Entity\Subdomain' 的鉴别器映射的一部分,才能在继承层次结构中正确映射。或者,您可以将 'Miejsce\DomainBundle\Entity\Miej`sceSubdomain' 设为抽象类,以避免发生此异常。
/**
* @ORM\Entity
*/
abstract class MiejsceSubdomain extends Subdomain
{
/**
* @ORM\ManyToOne(targetEntity="Miejsce\ObiektyBundle\Entity\Miejsce")
* @ORM\JoinColumn(name="rid", referencedColumnName="id")
*/
protected $miejsce;
}
/**
* Subdomain
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="ridType", type="integer")
* @ORM\DiscriminatorMap({"1" = "Miejsce\ObiektyBundle\Entity\Miejsce"})
*
* @ORM\Table(name="mSubdomains", indexes={
@ORM\Index(name="name", columns={"name"})
,@ORM\Index(name="ridridType", columns={"rid","ridType"})
}))
*/
class Subdomain
{
/**
* @var integer
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
* @var string
*/
private $name;
/**
* @ORM\Column(type="integer")
* @var integer
*/
private $rid;
【问题讨论】:
标签: php symfony doctrine-orm