Symfony 2上的学说指责小数是双打的

时间:2012-01-08 19:26:09

标签: php doctrine symfony

我正在阅读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());
}

这里他们传入一个字符串(可能是文档错误),但即使我将其更改为小数,我仍然得到相同的异常。 幸运的是我只是刮了我的头发,但请帮助我。问题是什么?

1 个答案:

答案 0 :(得分:3)

\ decimal不是PHP中的系统类或类型。只需删除类型提示。