我正在使用 Doctrine Fixtures 将一些数据加载到我的数据库中,有 3 个不同的表 User、Theme 和 Sous_Theme,最后两个表有外键,Theme 为 (user.id),Sous_Theme 作为两个外键 (user.id)。 id 和主题.id)
我的AppFixtures.php课程的设置方式是每个模型值都已经以这种方式编写:
private const USERS = [
[
'last_name' => 'Goodman',
'first_name'=> 'Robert',
'email' => 'robert@foobar.com',
'job' => 'Admin_Tester',
'password' => 'blablablablablbal',
'username' => 'blablablabla',
'roles' => [USER::ROLE_ADMIN]
]...
]
private const THEMES =
[
['name' => 'A theme'],
['name' => ' A theme 2']
.....
]
private const SOUSTHEMES = [
[
'name' => 'blablabla',
'part1' => true, //boolean
...
],
在编写 SOUSTHEMES 部分之前,我已经加载了用户和主题值及其完美运行的参考:
public function loadTheme(ObjectManager $manager)
{
foreach (self::THEMES as $themeDate){
$theme = new Theme();
$theme->setName($themeDate['name']);
$date = new \DateTime();
$date->modify('-'. rand(0, 10) . 'day');
$theme->setCreatedAt($date);
//// Setting user Id into our Theme table.
$theme->setUser($this->getReference(
self::USERS[rand(0, count(self::USERS) - 1)]['last_name']));
$manager->persist($theme);
}
$manager->flush();
}
现在我尝试使用引用 theme.id 和 user.id 加载 sousthemes :
public function loadSousThemes(ObjectManager $manager){
foreach (self::SOUSTHEMES as $sousthemeData){
$sousthemes = new SousTheme();
$sousthemes->setName($sousthemeData['name']);
$date = new \DateTime();
$date->modify('-'. rand(0, 10) . 'day');
$sousthemes->setCreatedAt($date);
我已经开始使用该getReference()方法,但我得到的引用不存在,所以我切换到了addReference()另一个错误,说引用已经存在,我需要使用它setReference()来覆盖它,所以我将我的方法更改为setReference()现在我收到一个错误
SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "theme_id" violates not-null constraint
慕标琳琳