无法识别ObjectManager(声明必须与FixtureInterface-> load兼容)

问题描述 投票:0回答:1

我已经尝试创建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 [
            ['[email protected]','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=']
        ];
    }
}

php symfony symfony4
1个回答
0
投票

看起来很简单,输入错误。我只更改了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 [
            ['[email protected]','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=']
        ];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.