2016-08-04 11 views
0

Ich habe ein Problem mit Doctrine ORM in Silex. Ich kann zwar Daten abrufen, aber keine Entität in meiner Datenbank speichern.Doktrin ORM in Silex: persist funktioniert nicht

Dies ist meine Konfiguration Lehre 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; 
}; 

ich einen Gegenstand in meinem Controller bekommen kann:

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

Aber wenn ich versuche, eine Zeile in meiner Datenbank hinzuzufügen, es doesn arbeite nicht.

$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(); 

Das ist mein Buch Modell:

namespace Generic\Domain; 

als ORM \ ORM \ Mapping Verwendung \ Lehre;

/** 
* 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; 

Vielen Dank für Ihre Antwort.

Antwort

0

Komisch Ich habe fast die gleiche Konfiguration und alles funktioniert einwandfrei. Meine Konfiguration

$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); 
Verwandte Themen