Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Doctrine2 + sqlite:in_memory: + oneToMany = Fail?!


Автор: hdg700 19.7.2011, 06:14
Всем привет.

Имеется проект на Zend_Framework + Doctrine2. 
База на mysql. 
Для ускорения unit-тестов используется sqlite in-memory база.

К примеру, есть две модельки "Вопрос" и "Ответ".

Код

/**
 * Poll_Model_Question
 *
 * @Table(name="poll__model__question")
 * @Entity(repositoryClass="Poll_Model_QuestionTable")
 */
class Poll_Model_Question
{
    ...

    /**
     * @OneToMany(targetEntity="Poll_Model_Answer", mappedBy="question")
     */
    private $answers;
}


Код

/**
 * Poll_Model_Answer
 *
 * @Table(name="poll__model__answer")
 * @Entity(repositoryClass="Poll_Model_AnswerTable")
 */
class Poll_Model_Answer
{
    ...
    /**
     * @ManyToOne(targetEntity="Poll_Model_Question", inversedBy="answers")
     * @JoinColumns({
     *   @JoinColumn(name="question_id", referencedColumnName="id", onDelete="CASCADE")
     * })
     */
    private $question;

}


В фикстурах есть вопрос и десять вариантов ответов к нему.
Делаем:
Код

$answers = $question->answers;
var_dump($answers);


На сайте выводится коллекция из десяти ответов, а вот в тестах возвращается массив, содержащий только первый добавленный ответ, хотя если сделать прямой запрос в таблицу ответов, то доступны все десять и все ссылаются на этот вопрос.
Прошу натолкнуть на мысль.. Либо это баг второй доктрины при работе с sqlite in-memory, либо что-то с самой sqlite, либо еще что-то... smile

UPD Прогнал тесты на mysql. Та же ошибка. Значит, проблема не в sqlite. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)