Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 3的关系_Php_Entity Framework_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php 多通条令数据库与额外字段Symfony 3的关系

Php 多通条令数据库与额外字段Symfony 3的关系,php,entity-framework,symfony,doctrine-orm,doctrine,Php,Entity Framework,Symfony,Doctrine Orm,Doctrine,我刚到Symfony,所以请容忍我 我想在Symfony中创建一个数据库关系,比如 我有实体Currency,AddRate和AddRate Currency 这些实体将完成3件简单的事情 用户将使用货币实体添加不同类型的货币 用户将使用AddRate实体选择必须添加这些货币的分行 用户将使用AddRateCurrency更新每种货币的汇率 我遇到的问题是 “条令\公共\集合\集合|数组”类型的预期值 对于关联字段“MontealBundle\Entity\AddRate#$currency”,

我刚到Symfony,所以请容忍我

我想在Symfony中创建一个数据库关系,比如

我有实体
Currency
AddRate
AddRate Currency
这些实体将完成3件简单的事情

  • 用户将使用
    货币
    实体添加不同类型的货币
  • 用户将使用
    AddRate
    实体选择必须添加这些货币的分行
  • 用户将使用
    AddRateCurrency
    更新每种货币的汇率
  • 我遇到的问题是

    “条令\公共\集合\集合|数组”类型的预期值 对于关联字段“MontealBundle\Entity\AddRate#$currency”,获取 改为“MontealBundle\Entity\Currency”

    在添加rate
    AddRateForm
    时,我使用
    EntityType
    嵌入我的表单

     public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('branch', EntityType::class, array(
                    'label' => 'Branch',
                    'class'=>'MontealBundle\Entity\Branch',
                    'query_builder' => function (BranchRepository $er) {
                        return $er->findAllActiveBranches();
                    },
                    'choice_label' => 'name',
                    'placeholder' => 'Choose a Branch',
                    'empty_data' => null,
                    'required' => true,
                    'constraints' => array(
                        new NotBlank(array("message" => 'Branch is required.'))
                    )
                ))
                ->add('currency', EntityType::class, array(
                    'label' => 'Currency',
                    'class'=>'MontealBundle\Entity\Currency',
                    'query_builder' => function (CurrencyRepository $er) {
                        return $er->findAllActiveCurrencies();
                    },
                    'choice_label' => 'currency',
                    'placeholder' => 'Choose a Currency',
                    'empty_data' => null,
                    'multiple' => true,
                    // 'expanded' => true,
                    'required' => true,
                    'constraints' => array(
                        new NotBlank(array("message" => 'Currency is required.'))
                    )
                ))
            ;
        }
    
    关于
    货币
    实体

    /**
     * @ORM\Entity
     * @ORM\Table(name="currency")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\CurrencyRepository")
     * @ORM\HasLifecycleCallbacks()
     * @UniqueEntity(fields={"code"}, message="Code is already used.")
     * @UniqueEntity(fields={"currency"}, message="Currency is already used.")
     */
    class Currency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $code;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $status;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @ORM\Column(type="date", nullable=true)
         */
        private $updatedAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getCode()
        {
            return $this->code;
        }
    
        /**
         * @param mixed $code
         */
        public function setCode($code)
        {
            $this->code = $code;
        }
    
        /**
         * @return mixed
         */
        public function getStatus()
        {
            return $this->status;
        }
    
        /**
         * @param mixed $status
         */
        public function setStatus($status)
        {
            $this->status = $status;
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getUpdatedAt()
        {
            return $this->updatedAt;
        }
    
        /**
         * @ORM\PreUpdate()
         */
        public function setUpdatedAt()
        {
            $this->updatedAt = new \DateTime();
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\AddRateRepository")
     * @ORM\HasLifecycleCallbacks()
     */
    class AddRate
    {
    
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Branch")
         * @ORM\JoinColumn(name="branch_id", referencedColumnName="id")
         */
        private $branch;
    
        /**
         * @ORM\OneToMany(targetEntity="AddRateCurrency", mappedBy="add_rate")
         */
        private $currency;
    
        public function __construct()
        {
            $this->currency = new ArrayCollection();
        }
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getBranch()
        {
            return $this->branch;
        }
    
        /**
         * @param mixed $branch
         */
        public function setBranch($branch)
        {
            $this->branch = $branch;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        public function addCurrency(Currency $currency) {
            $this->currency[] = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate_currency")
     */
    class AddRateCurrency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="AddRate", inversedBy="AddRateCurrency")
         * @ORM\JoinColumn(nullable=false)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string")
         */
        private $rate;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getRate()
        {
            return $this->rate;
        }
    
        /**
         * @param mixed $rate
         */
        public function setRate($rate)
        {
            $this->rate = $rate;
        }
    
    
    }
    
    AddRate
    实体上

    /**
     * @ORM\Entity
     * @ORM\Table(name="currency")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\CurrencyRepository")
     * @ORM\HasLifecycleCallbacks()
     * @UniqueEntity(fields={"code"}, message="Code is already used.")
     * @UniqueEntity(fields={"currency"}, message="Currency is already used.")
     */
    class Currency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $code;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $status;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @ORM\Column(type="date", nullable=true)
         */
        private $updatedAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getCode()
        {
            return $this->code;
        }
    
        /**
         * @param mixed $code
         */
        public function setCode($code)
        {
            $this->code = $code;
        }
    
        /**
         * @return mixed
         */
        public function getStatus()
        {
            return $this->status;
        }
    
        /**
         * @param mixed $status
         */
        public function setStatus($status)
        {
            $this->status = $status;
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getUpdatedAt()
        {
            return $this->updatedAt;
        }
    
        /**
         * @ORM\PreUpdate()
         */
        public function setUpdatedAt()
        {
            $this->updatedAt = new \DateTime();
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\AddRateRepository")
     * @ORM\HasLifecycleCallbacks()
     */
    class AddRate
    {
    
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Branch")
         * @ORM\JoinColumn(name="branch_id", referencedColumnName="id")
         */
        private $branch;
    
        /**
         * @ORM\OneToMany(targetEntity="AddRateCurrency", mappedBy="add_rate")
         */
        private $currency;
    
        public function __construct()
        {
            $this->currency = new ArrayCollection();
        }
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getBranch()
        {
            return $this->branch;
        }
    
        /**
         * @param mixed $branch
         */
        public function setBranch($branch)
        {
            $this->branch = $branch;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        public function addCurrency(Currency $currency) {
            $this->currency[] = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate_currency")
     */
    class AddRateCurrency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="AddRate", inversedBy="AddRateCurrency")
         * @ORM\JoinColumn(nullable=false)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string")
         */
        private $rate;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getRate()
        {
            return $this->rate;
        }
    
        /**
         * @param mixed $rate
         */
        public function setRate($rate)
        {
            $this->rate = $rate;
        }
    
    
    }
    
    AddRateCurrency
    实体上

    /**
     * @ORM\Entity
     * @ORM\Table(name="currency")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\CurrencyRepository")
     * @ORM\HasLifecycleCallbacks()
     * @UniqueEntity(fields={"code"}, message="Code is already used.")
     * @UniqueEntity(fields={"currency"}, message="Currency is already used.")
     */
    class Currency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string", unique=true)
         */
        private $code;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $status;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @ORM\Column(type="date", nullable=true)
         */
        private $updatedAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getCode()
        {
            return $this->code;
        }
    
        /**
         * @param mixed $code
         */
        public function setCode($code)
        {
            $this->code = $code;
        }
    
        /**
         * @return mixed
         */
        public function getStatus()
        {
            return $this->status;
        }
    
        /**
         * @param mixed $status
         */
        public function setStatus($status)
        {
            $this->status = $status;
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getUpdatedAt()
        {
            return $this->updatedAt;
        }
    
        /**
         * @ORM\PreUpdate()
         */
        public function setUpdatedAt()
        {
            $this->updatedAt = new \DateTime();
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate")
     * @ORM\Entity(repositoryClass="MontealBundle\Repository\AddRateRepository")
     * @ORM\HasLifecycleCallbacks()
     */
    class AddRate
    {
    
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="Branch")
         * @ORM\JoinColumn(name="branch_id", referencedColumnName="id")
         */
        private $branch;
    
        /**
         * @ORM\OneToMany(targetEntity="AddRateCurrency", mappedBy="add_rate")
         */
        private $currency;
    
        public function __construct()
        {
            $this->currency = new ArrayCollection();
        }
    
        /**
         * @ORM\ManyToOne(targetEntity="Administrator")
         * @ORM\JoinColumn(name="administrator_id", referencedColumnName="id")
         */
        private $administrator;
    
        /**
         * @ORM\Column(type="date")
         */
        private $createdAt;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getBranch()
        {
            return $this->branch;
        }
    
        /**
         * @param mixed $branch
         */
        public function setBranch($branch)
        {
            $this->branch = $branch;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        public function addCurrency(Currency $currency) {
            $this->currency[] = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getAdministrator()
        {
            return $this->administrator;
        }
    
        /**
         * @param mixed $administrator
         */
        public function setAdministrator($administrator)
        {
            $this->administrator = $administrator;
        }
    
        /**
         * @ORM\PrePersist
         */
        public function setCreatedAt()
        {
            $this->createdAt = new \DateTime();
        }
    
        public function getCreatedAt()
        {
            return $this->createdAt;
        }
    }
    
    /**
     * @ORM\Entity
     * @ORM\Table(name="add_rate_currency")
     */
    class AddRateCurrency
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\ManyToOne(targetEntity="AddRate", inversedBy="AddRateCurrency")
         * @ORM\JoinColumn(nullable=false)
         */
        private $currency;
    
        /**
         * @ORM\Column(type="string")
         */
        private $rate;
    
        /**
         * @return mixed
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * @return mixed
         */
        public function getCurrency()
        {
            return $this->currency;
        }
    
        /**
         * @param mixed $currency
         */
        public function setCurrency($currency)
        {
            $this->currency = $currency;
        }
    
        /**
         * @return mixed
         */
        public function getRate()
        {
            return $this->rate;
        }
    
        /**
         * @param mixed $rate
         */
        public function setRate($rate)
        {
            $this->rate = $rate;
        }
    
    
    }
    

    AddRate
    实体中,删除
    setCurrency
    函数。由于
    $currency
    是ArrayCollection,因此Symfony将(自动)使用您的
    addCurrency
    功能


    您选择的变量名在某种程度上增加了混淆。在<代码> ADDRATE < /代码>中,您可能需要考虑重命名<代码> $货币>代码> <代码> $货币< /C> > < /P> < P>在您的代码> ADDRATE < /Cord>实体中,删除<代码> StaseCurrase/Cuff>函数。由于
    $currency
    是ArrayCollection,因此Symfony将(自动)使用您的
    addCurrency
    功能

    您选择的变量名在某种程度上增加了混淆。在<代码> ADDRATE < /代码>中,您可能需要考虑重命名<代码> $货币<代码>到<代码> $货币< /C> > < /P>