Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony条令中的鉴别器列重复或不存在_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony条令中的鉴别器列重复或不存在

Php Symfony条令中的鉴别器列重复或不存在,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有这种情况 实体 /** * Subdomain * @ORM\Entity * @ORM\InheritanceType("SINGLE_TABLE") * @ORM\DiscriminatorColumn(name="ridType", type="integer") * @ORM\DiscriminatorMap({"1" = "Miejsce\DomainBundle\Entity\MiejsceSubdomain"}) * * @ORM\Table(name="mSub

我有这种情况

实体

/**
 * Subdomain
 * @ORM\Entity
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="ridType", type="integer")
 * @ORM\DiscriminatorMap({"1" = "Miejsce\DomainBundle\Entity\MiejsceSubdomain"})
 *
 * @ORM\Table(name="mSubdomains", indexes={
    @ORM\Index(name="name", columns={"name"})
    ,@ORM\Index(name="ridridType", columns={"rid","ridType"})
}))
 */
class Subdomain

 /**
     * @ORM\Column(type="integer")
     * @var integer
     */
    private $ridType;

/**
 * @ORM\Column(type="integer")
 * @var integer
 */
private $rid;
实体MIEJSCE

/**
 * @ORM\OneToOne(targetEntity="Miejsce\DomainBundle\Entity\MiejsceSubdomain", mappedBy="miejsce", cascade={"all"})
 * @var Subdomain
 */
protected $subdomain;
实体MiejsceSubdomain

class MiejsceSubdomain extends Subdomain
{

    /**
     * @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\Miejsce")
     * @ORM\JoinColumn(name="rid", referencedColumnName="id")
     */
    protected $miejsce;

}
给定:字段或鉴别器列映射中实体“Miejsce\DomainBundle\entity\Subdomain”上列“ridType”的重复定义

当我移除

/** *@ORM\Column(type=“integer”) *@var整数 */ 私家车类型

我尝试获取时出错

 $dbrow = $this->repository->createQueryBuilder('s')
                ->select(['s.rid','s.ridType'])
                ->where('s.name=:name')
                ->setParameter('name',$subdomain)
                ->getQuery()
                ->getOneOrNullResult();

[Semantical Error] line 0, col 16 near 'ridType FROM': Error: Class Miejsce\DomainBundle\Entity\Subdomain has no field or association named ridType 
更新1 当我尝试从基本实体执行此操作时:

$subdomain = $this->miejsce->getSubdomain();

        if(!$subdomain){
            $subdomain = new Subdomain();
            $subdomain->setRid($this->miejsce->getId());
        }
        $subdomain->setName($data['hotels_subdomain']);

        $this->em->persist($subdomain);
使用参数[“naslonecznej lazy”,“6662”,null]:

SQLSTATE[23000]:完整性约束冲突:1048列“ridType”不能为null

更新2

$subdomain = $this->miejsce->getSubdomain();

if(!$subdomain){
    $subdomain = new MiejsceSubdomain();
    $subdomain->setRid($this->miejsce->getId());
}
$subdomain->setName($data['hotels_subdomain']);

$this->em->persist($subdomain);
给予

使用参数[“naslonecznej lazy”,null,1]:

SQLSTATE[23000]:完整性约束冲突:1048列“rid”不能为null

为什么rid是空的? var_dump$子域给定

object(Miejsce\DomainBundle\Entity\MiejsceSubdomain)[696]
  protected 'miejsce' => null
  private 'id' (Miejsce\DomainBundle\Entity\Subdomain) => null
  private 'name' (Miejsce\DomainBundle\Entity\Subdomain) => string 'aaa' (length=3)
  private 'rid' (Miejsce\DomainBundle\Entity\Subdomain) => string '6662' (length=4)
更新3 我试着

同样的结果 使用参数[“naslonecznej lazy”,null,1]:

更新4

class Subdomain
{


    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", unique=true)
     * @var string
     */
    protected $name;

    /**
     * @ORM\Column(type="integer")
     * @var integer
     */
    protected $rid;

 $subdomain = $this->miejsce->getSubdomain();

        if(!$subdomain){

            $subdomain = new MiejsceSubdomain();
            $subdomain->setRid($this->miejsce->getId());

        }

        $subdomain->setName($data['hotels_subdomain']);

        var_dump($subdomain);

        $this->em->persist($subdomain);
仍然错误:

An exception occurred while executing 'INSERT INTO mSubdomains (name, rid, ridType) VALUES (?, ?, ?)' with params ["naslonecznej-lazy", null, 1]:
变量转储:

object(Miejsce\DomainBundle\Entity\MiejsceSubdomain)[696]
  protected 'miejsce' => null
  protected 'rid' => string '6662' (length=4)
  protected 'id' => null
  protected 'name' => string 'naslonecznej-lazy' (length=17)
正确的是

如果(!$子域){


实体子域未映射到DiscriminatorMap中。您需要执行以下操作,例如:

 * @ORM\DiscriminatorMap({"1" = "Miejsce\DomainBundle\Entity\MiejsceSubdomain", "2" = "Miejsce\DomainBundle\Entity\Subdomain"})

private$rid;
如果您希望子类能够访问此项,则此项不能为private。我将更改为protected,但有相同的错误-运行php应用程序/控制台缓存:清除什么原因导致此项不起作用?
        $subdomain = new MiejsceSubdomain();
        $subdomain->setMiejsce($this->miejsce);

    }
 * @ORM\DiscriminatorMap({"1" = "Miejsce\DomainBundle\Entity\MiejsceSubdomain", "2" = "Miejsce\DomainBundle\Entity\Subdomain"})