插入新实体数据时出现Symfony错误

时间:2015-04-08 21:24:31

标签: symfony insert entity

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

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

  

属性" selectedstock"也不是其中一种方法   " addSelectedstock()" /" removeSelectedstock()"," setSelectedstock()",   " selectedstock()"," __ set()"或" __ call()"存在并公开   在课堂上访问" iCerge \ Salesdeck \ SalesBundle \ Entity \ 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';
    }

}

任何人都可以让我深入了解我在这里做错了什么吗?

更新

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

enter image description here

1 个答案:

答案 0 :(得分:2)

您没有针对selectedstock的setter,与没有注释的错误无关,将selectedstock标记为orm列,因此不会保留。