2016-08-04 65 views
0

我在Silex中學習ORM有問題。我能夠獲取一些數據,但無法在數據庫中保存實體。Silex中的學說ORM:堅持不起作用

這是我的學說ORM的配置:

$app['em'] = function ($app) { 
    $params = array(
     'driver' => 'pdo_mysql', 
     'dbname' => 'beacon_prototype', 
     'host' => 'localhost', 
     'user' => '****', 
     'password' => '****', 
     'charset' => 'utf8', 
    ); 

    $config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src/Domain"), true); 

    $driver = new AnnotationDriver(new AnnotationReader(), array(__DIR__."/src/Domain")); 

    AnnotationRegistry::registerLoader('class_exists'); 
    $config->setMetadataDriverImpl($driver); 

    $em = EntityManager::create($params, $config); 

    return $em; 
}; 

我可以得到一些對象在我的控制器有:

$room = $app['em']->getRepository('Generic\Domain\Room')->findById($room_id); 

但是,當我試圖在我的數據庫添加行,它不沒有工作。

$booking = new Booking(); 
$booking->setEventName($event_name); 
$booking->setRoom($room); 
$booking->setUser($user); 
$booking->setEventStart($event_start); 
$booking->setEventEnd($event_end); 

$app['em']->persist($booking); 
$app['em']->flush(); 

這是我的預訂模式:

namespace Generic\Domain; 

使用\原則\ ORM \映射作爲ORM;

/** 
* Generic\Domain\Booking 
* 
* @ORM\Entity 
* @ORM\Table(name="booking") 
*/ 
class Booking 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    public $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="User", inversedBy="booking", fetch="EAGER") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    public $user; 

    /** 
    * @ORM\ManyToOne(targetEntity="Room", inversedBy="booking", fetch="EAGER") 
    * @ORM\JoinColumn(name="room_id", referencedColumnName="id") 
    */ 
    public $room; 

    /** 
    * @ORM\Column(type="string", length=255, nullable=false) 
    */ 
    public $event_name; 

    /** 
    * @ORM\Column(type="datetime", length=255, nullable=false) 
    */ 
    public $event_start; 

    /** 
    * @ORM\Column(type="datetime", length=255, nullable=false) 
    */ 
    public $event_end; 

感謝您的回覆。

回答

0

奇怪我有幾乎相同的配置,一切工作都很好。我的配置

$settings = $c->get('settings')['doctrine']; 

$config = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(
    $settings['meta']['entity_path'], 
    $settings['meta']['auto_generate_proxies'], 
    $settings['meta']['proxy_dir'], 
    $settings['meta']['cache'], 
    false 
); 

$em = \Doctrine\ORM\EntityManager::create($settings['connection'], $config);