суббота, 22 мая 2010 г.

Грабли: очередность загрузки фикстур

Если в папке с фикстурами лежат несколько файлов, то они обрабатываются все сразу, а по очереди. Это надо учитывать, когда создаются связи между записями в разных файлах!
Легко натолкнуться на ситуацию, когда связь не будет создана только потому, что объекта, с которым она связывает, еще нет в БД, и он неизвестен Доктрине: она до него еще просто не дошла.

Стоит отметить, что в пределах одного файла такой проблемы нет.

3 комментария:

  1. Женя, ты чего? Как человек, который дебажил исходники Doctrine_Import, ответственно заявляю, что содержимое всех фикстур сначала собирается в один большой массив только и затем импортится в БД. Так что этой проблемы на самом деле нет.

    ОтветитьУдалить
  2. Андрей, всех фикстур одного файла - Да. Но не всех файлов: файлы обрабатываются по одному.

    ОтветитьУдалить
  3. да это так :) сам в шоке был когда узнал

    ОтветитьУдалить