2016-08-04 4 views
0

SilexのDoctrine ORMに問題があります。私はいくつかのデータを取得することはできますが、データベース内のエンティティを保存することはできません。SilexのDoctrine 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); 

しかし、私は自分のデータベース内の行を追加しようとすると、それはdoesnの仕事はありません。

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

これは私の予約モデルである:ORMとして教義\ ORM \マッピング\

namespace Generic\Domain; 

を使用。

/** 
* 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); 
関連する問題