php - 无法识别 ObjectManager(声明必须与 FixtureInterface->load 兼容)
问题描述
我试图创建 DataFixtures,我认为我的代码是正确的,因为如果我尝试另一个项目,它就可以工作。所以我不明白为什么在我的实际项目中,对象管理器不起作用,而我的 IDE 是底层对象管理器。
我的错误:
Declaration must be compatible with FixtureInterface->load(manager: \Doctrine\Persistence\ObjectManager)
我的代码:
<?php
namespace App\DataFixtures;
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserFixtures extends Fixture
{
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder =$passwordEncoder;
}
public function load(ObjectManager $manager)
{
foreach ($this->getUserData() as [$email,$password,$lastname,$firstname,$company,$language,$enabled,$pictures])
{
$user = new User();
$user->setEmail($email);
$user->setPassword($this->passwordEncoder->encodePassword($user,$password));
$user->setLastname($lastname);
$user->setFirstname($firstname);
$user->setCompany($company);
$user->setLanguage($language);
$user->setEnabled($enabled);
$user->setPictures($pictures);
}
$manager->flush();
}
private function getUserData() : array {
return [
['test@gmail.com','test','paul','marc','WKCompany','BE',1,'https://media.istockphoto.com/photos/businessman-silhouette-as-avatar-or-default-profile-picture-picture-id476085198?k=6&m=476085198&s=612x612&w=0&h=5cDQxXHFzgyz8qYeBQu2gCZq1_TN0z40e_8ayzne0X0=']
];
}
}
解决方案
它看起来很简单的类型错误。我只更改了 ObjectManager 命名空间。
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserFixtures extends Fixture
{
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder =$passwordEncoder;
}
public function load(ObjectManager $manager)
{
foreach ($this->getUserData() as [$email,$password,$lastname,$firstname,$company,$language,$enabled,$pictures])
{
$user = new User();
$user->setEmail($email);
$user->setPassword($this->passwordEncoder->encodePassword($user,$password));
$user->setLastname($lastname);
$user->setFirstname($firstname);
$user->setCompany($company);
$user->setLanguage($language);
$user->setEnabled($enabled);
$user->setPictures($pictures);
}
$manager->flush();
}
private function getUserData() : array {
return [
['test@gmail.com','test','paul','marc','WKCompany','BE',1,'https://media.istockphoto.com/photos/businessman-silhouette-as-avatar-or-default-profile-picture-picture-id476085198?k=6&m=476085198&s=612x612&w=0&h=5cDQxXHFzgyz8qYeBQu2gCZq1_TN0z40e_8ayzne0X0=']
];
}
}
推荐阅读
- java - 从 Firebase java 获取 Map 值
- java - 在 JUnit 测试中使用变量
- sass - SASS 在一个元素中嵌套多个类
- sql-server - SQL Server SQLTableDependency 的 enable_broker 是什么
- ios - 你如何收紧 UILabel 的 sizeToFit 以使用更小的边距?
- ios - 如何使用图表中的多行解决此问题
- spring-boot - 卡桑德拉 | 如何将当前数据集与之前的数据集进行比较?
- javascript - React:如何将特定数据发送到使用 .map 创建的组件的特定实例
- ruby - 如何将 json 主体从 ruby 传递到 bash 脚本
- ionic3 - Ionic 3:错误消息:“预期的类型来自属性 'message',它在类型 'ToastOptions' 上声明”