我正在阅读Symfony 2文档,我被困在the model part of the book。
$price
是缩放比例2
:
// src/Acme/StoreBundle/Entity/Product.php
namespace Acme\StoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="product")
*/
class Product
{
// ...
/**
* @ORM\Column(type="decimal", scale=2)
*/
protected $price;
// ..
}
我通过控制台生成了文档中所述的setter和getter,并在同一个实体类中给了我这个:
/**
* Set price
*
* @param dicimal $price
*/
public function setPrice(\decimal $price)
{
$this->price = $price;
}
所以Doctrine使用类型提示要求$price
为小数。
问题是它不断提出这个例外:
Catchable Fatal Error: Argument 1 passed to
Acme\StoreBundle\Entity\Product::setPrice()
must be an instance of decimal, double given,
这是它在defaultCountroller中调用的方式:
// ...
public function createAction()
{
$product = new Product();
$product->setName('A Foo Bar');
$product->setPrice('19.99');
$product->setDescription('Lorem ipsum dolor');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($product);
$em->flush();
return new Response('Created product id '.$product->getId());
}
这里他们传入一个字符串(可能是文档错误),但即使我将其更改为小数,我仍然得到相同的异常。 幸运的是我只是刮了我的头发,但请帮助我。问题是什么?
答案 0 :(得分:3)
\ decimal不是PHP中的系统类或类型。只需删除类型提示。