доктрина 2 - сохранение сущности с составным ключом - PullRequest
0 голосов
/ 18 апреля 2011

Объект Doctrine 2 с составным ключом:

/**
 * @Entity 
 */
class Test
{
    /**
     * @Id
     * @Column (type="integer", length=11, name="id")
     *
     */
    protected $id = null;

    /**
     * @Id
     * @Column (type="integer", length=11, name="idtwo")
     *
     */
    protected $idtwo = null; 

    public function setIdTwo($id)
    {
        $this->idtwo = $id;
    }

    public function setId($id)
    {
        $this->id = $id;
    }

}

Сохранение объекта

$test = new Test();
$test->setId(1);
$test->setIdTwo(1);
$em->persist($test);

Таблица БД:

CREATE TABLE `Bella_Test` (
  `id` int(11) NOT NULL,
  `idtwo` int(11) NOT NULL,
  PRIMARY KEY (`id`,`idtwo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Ожидаемый результат: строкадобавляется в таблицу БД с двумя полями идентификаторов, каждое из которых имеет значение 1.

Фактический результат: строка не добавляется в таблицу БД.Исключений не было.

Вопрос: что происходит?

1 Ответ

0 голосов
/ 01 декабря 2011

Вы можете использовать блок try catch, чтобы увидеть, что происходит

try{
    $em->flush(); //don't forget flush after persisting an object
}
catch(Exception $e){
   echo 'Flush Operation Failed: '.$e->getMessage();   
}

Другое предположение, на мой взгляд, имя вашей таблицы сущностей и имя таблицы БД могут не совпадать. Я думаю, что неплохо бы попробовать

/**
 * @Entity 
 * @Table(name="Bella_Test")
 */
 .
 .
 .
...