php - Symfony 和 Doctrine MappedSuperClass - 夹具失败
问题描述
我有这个映射的超级类
/**
* @ORM\MappedSuperclass()
*/
abstract class Address
{
/**
* @ORM\Column(type="string", length=255)
*/
protected $street;
/**
* @ORM\Column(type="string", length=10)
*/
protected $zipCode;
/**
* @ORM\Column(type="string", length=255)
*/
protected $city;
/**
* @ORM\Column(type="string", length=255)
*/
protected $country;
public function getStreet(): ?string
{
return $this->street;
}
public function setStreet(string $street): self
{
$this->street = $street;
return $this;
}
public function getZipCode(): ?string
{
return $this->zipCode;
}
public function setZipCode(string $zipCode): self
{
$this->zipCode = $zipCode;
return $this;
}
public function getCity(): ?string
{
return $this->city;
}
public function setCity(string $city): self
{
$this->city = $city;
return $this;
}
public function getCountry(): ?string
{
return $this->country;
}
public function setCountry(string $country): self
{
$this->country = $country;
return $this;
}
}
这个位置类女巫继承了我的超级类:
/**
* @ApiResource()
* @ORM\Entity(repositoryClass="App\Repository\LocationRepository")
*/
class Location extends Address
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
}
我想添加一些固定装置:
class LocationFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$events = $manager->getRepository(Event::class)->findAll();
$faker = Factory::create();
foreach ($events as $event) {
$location = new Location();
$location->setName($faker->streetName);
$location->setStreet($faker->streetAddress);
$location->setCity($faker->city);
$location->setCountry($faker->country);
$location->setZipCode($faker->postcode);
$event->setLocation($location);
$manager->persist($event);
}
$manager->flush();
}
}
但是那些失败并显示此错误消息:
执行 'INSERT INTO location (name, street, zip_code, city, country) VALUES (?, ?, ?, ?, ?)' 时发生异常,参数 ["14549 Mayer Freeway\nSengerchester, ME 42242", null, null ,空,空]:
SQLSTATE [23000]:违反完整性约束:1048 列 'street' 不能为空
我在我的灯具中设置了我的街道属性,那么问题是什么?
解决方案
谢谢你让我指出了问题所在。我还在我的 EventFixture 中设置了一个位置。正是这些人失败了。
我把所有东西都放在了我的活动装置中,它起作用了
class EventFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
$faker = Factory::create();
for ($i = 0; $i < 10; $i++) {
$event = new Event();
$event->setName($faker->name);
$event->setDescription($faker->text);
$dateStart = $faker->dateTime;
$event->setStartAt($dateStart);
$event->setFinishAt($dateStart->add(new \DateInterval('P2D')));
$event->setPrice($faker->numberBetween(20, 200));
$event->setType(EventType::PHOTOGRAPHY);
$event->setInstagram($faker->firstName);
$location = new Location();
$location->setName($faker->streetName);
$location->setStreet($faker->streetAddress);
$location->setCity($faker->city);
$location->setCountry($faker->country);
$location->setZipCode($faker->postcode);
$manager->persist($location);
$event->setLocation($location);
$manager->persist($event);
}
$manager->flush();
}
}
推荐阅读
- java - Java/Spring:如何找到打开 Resilence4J 断路器的错误?
- qemu - QEMU-KVM 自动设置 filterref 参数
- ubuntu - 带有 Ubuntu 20.04 的 VPS:无法连接到 Github
- android - 导航组件不适用于 FragmentContainerView
- html - 将预加载器图标更改为图像
- php - 如何检查当前用户是否在 WooCommerce 中有特定产品的挂单?
- reactjs - 如何将值从子组件发送到父组件?(功能组件)
- google-sheets - 如何根据谷歌电子表格中的多个条件从另一个单元格匹配或获取动态值
- php - 代替输入的是 HTML
- javascript - 将函数赋予 ::before 箭头