【问题标题】:Symfony error when inserting new entity data插入新实体数据时出现 Symfony 错误
【发布时间】:2015-04-08 21:24:31
【问题描述】:

我是学习 Symfony 的初学者。我有一个名为 sale 的实体,我有一个用于插入销售数据的表单。

问题是每次尝试插入数据都会导致以下错误:

既不是“selectedstock”属性也不是其中一种方法 "addSelectedstock()"/"removeSelectedstock()", "setSelectedstock()", “selectedstock()”、“__set()”或“__call()”存在并公开 在“iCerge\Salesdeck\SalesBundle\Entity\Sale”类中访问。

我的Sale类如下:

<?php

    namespace iCerge\Salesdeck\SalesBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;

    /**
     * Sales
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="iCerge\Salesdeck\SalesBundle\Entity\SalesRepository")
     */
    class Sale
    {

         private $selectedstock;

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

        /**
         * @var float
         *
         * @ORM\Column(name="cost", type="float")
         */
        private $cost;

        /**
         * @var float
         *
         * @ORM\Column(name="profitloss", type="float")
         */
        private $profitloss;

        /**
         * @var \DateTime
         *
         * @ORM\Column(name="date", type="datetime")
         */
        private $date;

        /**
         * @ORM\ManyToOne(targetEntity="iCerge\Salesdeck\StockBundle\Entity\Stock", inversedBy="sales")
         * @ORM\JoinColumn(name="sid", referencedColumnName="id")
         */
        protected $stock;

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

        /**
         * @var float
         *
         * @ORM\Column(name="active_buy_price", type="float")
         */
        private $active_buy_price;

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

        /**
         * Get sid
         *
         * @return integer 
         */
        public function getSid()
        {
            return $this->sid ? $this->sid : 0;
        }

        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }

        /**
         * Set cost
         *
         * @param float $cost
         * @return Sales
         */
        public function setCost($cost)
        {
            $this->cost = $cost;

            return $this;
        }

        /**
         * Get cost
         *
         * @return float 
         */
        public function getCost()
        {
            return $this->cost;
        }

        /**
         * Set date
         *
         * @param \DateTime $date
         * @return Sales
         */
        public function setDate($date)
        {
            $this->date = $date;

            return $this;
        }

        /**
         * Get date
         *
         * @return \DateTime 
         */
        public function getDate()
        {
            return $this->date;
        }

        /**
         * Set profitloss
         *
         * @param float $profitloss
         * @return Sales
         */
        public function setProfitloss($profitloss)
        {
            $this->profitloss = $profitloss;

            return $this;
        }

        /**
         * Get profitloss
         *
         * @return float 
         */
        public function getProfitloss()
        {
            return $this->profitloss;
        }


        /**
         * Set stock
         *
         * @param \iCerge\Salesdeck\StockBundle\Entity\Stock $stock
         * @return Sale
         */
        public function setStock(\iCerge\Salesdeck\StockBundle\Entity\Stock $stock = null)
        {
            $this->stock = $stock;

            return $this;
        }

        /**
         * Get stock
         *
         * @return \iCerge\Salesdeck\StockBundle\Entity\Stock 
         */
        public function getStock()
        {
            return $this->stock;
        }

        /********************/
        /**
         * Set number_of_purchases
         *
         * @return integer
         */
        public function setNumberOfPurchases($purchases)
        {
            $this->number_of_purchases = $purchases;

            return $this;
        }

        /**
         * Get number_of_purchases
         *
         * @return integer 
         */
        public function getNumberOfPurchases()
        {
            return $this->number_of_purchases;
        }

        /**
         * Set active_buy_price
         *
         * @return integer
         */
        public function setActiveBuyPrice($price)
        {
            $this->active_buy_price = $price;

            return $this;
        }

        /**
         * Get active_buy_price
         *
         * @return integer 
         */
        public function getActiveBuyPrice()
        {
            return $this->active_buy_price;
        }

        public function getselectedstock()
        {
            return $this->selectedstock;
        }
    }

以下是我的 Form 类:

<?php

namespace iCerge\Salesdeck\SalesBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class SalesType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('selectedstock', 'choice', array(
                'choices'       =>  $options['allow_extra_fields'],
                'required'      =>  true,
                'empty_value'   =>  'Choose a Product',
                'empty_data'    =>  null,
                'label'         =>  'Select Item',
                // 'mapped'=>false
            ))
            /*->add('test', 'choice', array(
                'choices' => $options['allow_extra_fields'],
                'required'    => false,
                'empty_value' => 'Choose your gender',
                'empty_data'  => null,
                'mapped'=>false
            ))*/
            ->add('number_of_purchases', 'integer', array('label'=>'Number of purchases'))
            ->add('cost')
            ->add('profitloss', 'text', array('label'=>'Profit/Loss'))
            ->add('date', 'datetime', array('data'=>new \DateTime('now')))
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            // 'data_class' => 'iCerge\Salesdeck\SalesBundle\Entity\Sales'
            'data_class' => 'iCerge\Salesdeck\SalesBundle\Entity\Sale'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'icerge_salesdeck_salesbundle_sales';
    }

}

我在这里做错了什么?

更新

屏幕截图显示可用库存的下拉列表。 该表单是销售/添加表单,需要从列表中选择一项可用库存。

【问题讨论】:

  • 某处缺少大写字母? getselectedstock 与 getSelectedstock
  • 你的 selectedstock 属性的 ORM 映射是什么?
  • @whitelettersandblankspaces:selectedStock 是我将销售与特定可用库存项目联系起来的方式 - 我希望能回答你的问题,因为我对交响乐很陌生。如果有助于澄清事情,我已附上屏幕截图
  • 通过映射我是指您用于属性selectedStock 的注释(就像您对其他属性所做的那样)。看看 sharchasol 的回答,我发现他也指出了这一点。尝试为 selectedStock 定义 ORMapping 并生成适当的 getter/setter,以便至少有一个错误提到的方法可用。

标签: symfony insert entity


【解决方案1】:

您没有selectedstock的setter,与您没有注释将selectedstock标记为orm列的错误无关,因此不会持久化。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2012-11-26
    • 2018-02-11
    • 2018-05-29
    • 2014-05-02
    • 2016-09-28
    • 2015-06-01
    • 2017-04-06
    • 2011-08-14
    相关资源
    最近更新 更多