Насколько я знаю, вы можете использовать сценарии инициализации вместо классических. Документация Yii гласит:
Возможно также, что нам не нравится стандартный способ сброса
таблицу, то есть, обрезая ее и вставляя ее с данными прибора. Если
в этом случае мы можем написать скрипт инициализации для
конкретный файл фикстуры. Сценарий должен быть назван как имя таблицы
с суффиксом .init.php. Например, скрипт инициализации для
Таблица сообщений будет Post.init.php. Когда CDbFixtureManager видит
этот сценарий, он будет выполнять этот сценарий вместо использования по умолчанию
способ сбросить таблицу.
Так что в вашем случае вместо protected/tests/fixtures/Comment.php
у вас будет protected/tests/fixtures/Comment.init.php
, который делает это:
// the $this variable refers to the CBdFixtureManager instance
$this->truncateTable($tableName);
$post = $this->getRecord('Post','post1'); // get dependent fixture
// define new fixture
$commentAttributes = array(
'text' => 'Comment text...',
'post_id' => $post->id
);
$comment = new Comment;
$comment->setAttributes($commentAttributes);
if(!$comment->save()) throw new CException('Unable to save fixture');
// add new row primary key
$pk = Comment::model()->getTableSchema()->primaryKey;
if(is_string($pk))
$commentAttributes[$pk] = $comment->$pk;
elseif(is_array($pk))
foreach($pk as $key)
$commentAttributes[$key] = $comment->$key;
$this->_rows['Comment']['comment1'] = $commentAttributes;
$this->_records['Comment']['comment1'] = 'Comment';
Хотя я понимаю, что ответ очень поздний, это должно решить вашу проблему. С тех пор, как я попал сюда, я надеялся, что смогу помочь кому-то, кому нужна эта информация.