Я читаю документацию по Symfony 2 и застрял на модельной части книги .
$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;
// ..
}
Я сгенерировал сеттеры и геттеры, как указано в документации через консоль, и дал мне это для того же класса сущности:
/**
* 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());
}
здесь они передаются в виде строки (возможно, это ошибка документации), но даже если я изменю ее на десятичную, я получаю одно и то же исключение.
К счастью, я только что побрился, но, пожалуйста, помогите мне в этом. в чем проблема?