我现在尝试学习Doctrine2,所以我创建了一个简单的实体(实际上我是从教程中得到的):
<?php
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Product {
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
public function getId() {
return $this->id;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name;
return $this;
}
}
我还创建了一个用于创建和保留此类产品的操作:
public function createProductAction() {
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$em->getConnection()
->getConfiguration()
->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());
$product = new Product();
$product->setName("Test product");
$em->persist($product);
$em->flush();
echo "Created product with ID ".$product->getId();
}
当然,在测试之前,我已经运行了一个命令来创建数据库方案(并检查它是否实际创建了)。用户的Simillar代码运行顺畅,但此操作报告如下:
"START TRANSACTION" INSERT INTO Product (name) VALUES (?)
array (size=1)
1 => null
array (size=1)
1 => string 'string' (length=6)
"ROLLBACK"
出了什么问题?反正以某种方式调试它? :|