1 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
首先,您根本不需要 addReference/getReference,因?yàn)槟褂靡粋€(gè)固定文件。因此,在您的情況下,您只需保存對(duì)象并在設(shè)置器中使用它們,例如:
in loadUsers:
public function loadUsers(ObjectManager $manager)
{
foreach (self::USERS as $userData)
{
$user = new User();
///...
$manager->persist($user);
$this->users[$userData['username']] = $user;
}
$manager->flush();
}
and in loadTheme:
$theme->setUser($this->users[self::USERS[rand(0, count(self::USERS) - 1)]['username']]);
您不需要引用,因?yàn)槟梢栽L問(wèn)對(duì)象,當(dāng)夾具位于單獨(dú)的文件中時(shí),引用非常有用,因?yàn)檫@樣您就無(wú)法訪問(wèn)在不同夾具文件中創(chuàng)建的對(duì)象。此處描述: https: //symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html#sharing-objects- Between-fixtures 。
但是假設(shè)您想使用引用,我將嘗試提供指導(dǎo)來(lái)修復(fù)您已有的代碼。您說(shuō)通過(guò)引用加載用戶適用于主題:
$theme->setUser($this->getReference(self::USERS[rand(0, count(self::USERS) - 1)]['last_name']));
它有效,因?yàn)槟谝韵挛恢锰砑恿艘胠oadUsers:
$this->addReference($userData['last_name'], $user);
因此,在loadUsers您獲得這些參考資料后:
User objects:
- Goodman
- ...
現(xiàn)在,每當(dāng)您調(diào)用時(shí),$this->getReference('Goodman');您都會(huì)獲得可以在設(shè)置器中使用的 User 對(duì)象,例如。設(shè)置用戶();
但您從未調(diào)用addReference來(lái)loadTheme保存對(duì)主題對(duì)象的引用。
添加addReference到loadTheme:
public function loadTheme(ObjectManager $manager)
{
foreach (self::THEMES as $themeDate){
$theme = new Theme();
$theme->setName($themeDate['name']);
// ...
$theme->setUser($this->getReference(
self::USERS[rand(0, count(self::USERS) - 1)]['last_name']));
$manager->persist($theme);
$this->addReference($theme->getName(), $theme);
}
$manager->flush();
}
因此,之后loadUsers這些loadThemes參考資料將可用:
User objects:
- Goodman
- ...
Theme objects:
- A theme
- A theme 2
- ...
最后在你的loadSousThemes:
$sousthemes->setUsername($this->getReference(
self::USERS[rand(0, count(self::USERS) - 1)]['last_name']));
$sousthemes->setTheme($this->getReference(
self::THEMES[rand(0, count(self::THEMES) - 1)]['name']));
請(qǐng)注意,我假設(shè)這$sousthemes->setUsername()實(shí)際上是用于設(shè)置 User 對(duì)象,而不僅僅是用戶名(為什么不稱(chēng)為 setUser?)
- 1 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報(bào)