2015-04-08 3 views
0

Я начинаю изучать symfony. У меня есть компания под названием продажа, для которой я форма для вставки данных о продажах.Ошибка Symfony, вставляющая данные нового объекта

Проблема заключается каждая попытка вставить результаты данных в следующей ошибки:

Neither the property "selectedstock" nor one of the methods "addSelectedstock()"/"removeSelectedstock()", "setSelectedstock()", "selectedstock()", "__set()" or "__call()" exist and have public access in class "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; 
     } 
    } 

И следующий мой Форма класс:

<?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'; 
    } 

} 

Can a Пожалуйста, дайте мне понять, что я здесь делаю неправильно?

UPDATE:

Скриншот показывает выпадающий список имеющихся запасов. Форма представляет собой форму продажи/добавления, которая требует наличия элемента запаса из списка, который нужно выбрать.

enter image description here

+1

отсутствует прописная буква где-нибудь? getselectedstock vs getSelectedstock –

+0

Каково ваше сопоставление ORM для атрибута selectedstock? –

+0

@whitelettersandblankspaces: selectedStock - это мой способ подключения продажи к определенному доступному товару - я надеюсь, что это ответит на ваш вопрос, поскольку я довольно новичок в симфонии. Я добавил скриншот, если это поможет прояснить вещи – sisko

ответ

2

Вы не сеттера для selectedstock, и не связано с ошибкой не имеют аннотацию маркировать selectedstock как колонны ОРМ, поэтому он не будет сохраняться.

Смежные вопросы