我是一名学习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';
}
}
任何人都可以让我深入了解我在这里做错了什么吗?
更新
屏幕截图显示可用库存的下拉列表。 表单是销售/添加表单,需要从列表中选择一个可用库存项目。
答案 0 :(得分:2)
您没有针对selectedstock的setter,与没有注释的错误无关,将selectedstock标记为orm列,因此不会保留。