微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用子实体时如何生成 EasyAdmin CRUD 控制器

如何解决使用子实体时如何生成 EasyAdmin CRUD 控制器

在我的子类中显示对象时遇到问题。 对象创建后,正确插入到数据库中,但显示时报错。

这里是继承链接

以下是问题涉及的页面代码

<?PHP

    namespace App\Entity;

    use App\Repository\UserRepository;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Security\Core\User\UserInterface;

    /**
     * @ORM\Entity(repositoryClass=UserRepository::class)
     * @ORM\Table(name="`user`")
     */

    class User implements UserInterface
    {

        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;

        /**
         * @ORM\Column(type="string",length=180,unique=true)
         */
        private $email;

        /**
         * @ORM\Column(type="json")
         */
        private $roles = [];

        /**
         * @var string The hashed password
         * @ORM\Column(type="string")
         */
        private $password;

        /**
         * @ORM\Column(type="string",length=255,nullable=true)
         */
        private $firstname;

        /**
         * @ORM\Column(type="string",nullable=true)
         */
        private $lastname;

        /**
         * @ORM\Column(type="string",nullable=true)
         */
        private $Entit;

加上 getter 和 setter)

  • 客户:
<?PHP

namespace App\Entity;

use App\Repository\ClientRepository;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\User;

/**
 * @ORM\Entity(repositoryClass=ClientRepository::class)
 */
Abstract class Client extends User
{


    /**
     * @ORM\Column(type="string",nullable=true)
     */
    private $adresse;

    /**
     * @ORM\Column(type="integer",nullable=true)
     */
    private $cp;

    /**
     * @ORM\Column(type="string",nullable=true)
     */
    private $ville;

    /**
     * @ORM\Column(type="string",length=15,nullable=true)
     */
    private $telephone;

加上 getter 和 setter)

  • 玛丽:
<?PHP

namespace App\Entity;

use App\Entity\Client;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\MairieRepository;

/**
 * @ORM\Entity(repositoryClass=MairieRepository::class)
 */
class Mairie extends Client
{

}
  • 仪表板控制器:
<?PHP

namespace App\Controller\Admin;

use App\Entity\Elu;
use App\Entity\Client;
use App\Entity\Mairie;
use App\Entity\User;
use App\Entity\CdcColl;
use App\Entity\DashboardKibana;
use App\Repository\UserRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;

class DashboardController extends AbstractDashboardController
{

    protected $userRepository;
    
    public function __construct(
        UserRepository $userRepository
    )
    {
        $this->userRepository = $userRepository;
    }

    /**
     * @Route("/admin",name="admin")
     * @Security("is_granted('ROLE_ADMIN')")
     */
    public function index(): Response
    {
        return $this->render('admin/welcome.html.twig',[
            'countUser' => $this->userRepository->countAllUser()
        ]
    );
    }

    public function configureDashboard(): Dashboard
    {
        return Dashboard::new()
            ->setTitle('SrciToZeendoc');
    }

    public function configureMenuItems(): iterable
    {
        yield MenuItem::linktoDashboard('Accueil','fa fa-home');
        yield MenuItem::linkToCrud('Dashboard','fas fa-chart-line',DashboardKibana::class); 
        yield MenuItem::linkToCrud('Mairie','fas fa-landmark',Mairie::class); 
        yield MenuItem::linkToCrud('Utilisateurs','fas fa-users',User::class);
        yield MenuItem::linkToCrud('Elu','fas fa-user',Elu::class);
        yield MenuItem::linkToCrud('Collectivité',CdcColl::class);
        yield MenuItem::linkToUrl('Retour Site','fas fa-undo','/');
    }
}
  • MairieCrudController :
<?PHP

namespace App\Controller\Admin;

use App\Entity\Mairie;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;

class MairieCrudController extends AbstractCrudController
{
    public static function getEntityFqcn(): string
    {
        return Mairie::class;
    }

    
    public function configureFields(string $pageName): iterable
    {
        return [
            TextField::new('email'),ChoiceField::new('roles','Roles')
            ->allowMultipleChoices()
            ->autocomplete()
            ->setChoices([  'User' => 'ROLE_USER','Mairie' => 'ROLE_MAIRIE','Admin' => 'ROLE_ADMIN','SuperAdmin' => 'ROLE_SUPER_ADMIN','Dashboard' => 'ROLE_DASHBOARD','Opendata' => 'ROLE_OPENDATA','IOT' => 'ROLE_IOT','Coffre Fort' => 'ROLE_COFFRE','Certificat SSL' => 'ROLE_SSL','GED' => 'ROLE_GED','Archivage' => 'ROLE_ARCHIVAGE','Statistiques' => 'ROLE_STATISTIQUES','Reporting' => 'ROLE_REPORTING','Cartographie' => 'ROLE_CARTOGRAPHIE'
                            ]
        )
        ->setPermission("ROLE_SUPER_ADMIN"),TextField::new('Password')->hideOnIndex(),TextField::new('Firstname'),TextField::new('Lastname'),TextField::new('adresse'),TextField::new('cp'),TextField::new('ville'),TextField::new('telephone')           
        ];
    }
  
}

这是得到的错误

An exception occurred while executing 'SELECT u0_.id AS id_0,u0_.email AS email_1,u0_.roles AS roles_2,u0_.password AS password_3,u0_.firstname AS firstname_4,u0_.lastname AS lastname_5,u0_.entit AS entit_6,c1_.adresse AS adresse_7,c1_.cp AS cp_8,c1_.ville AS ville_9,c1_.telephone AS telephone_10 FROM mairie m2_ WHERE m2_.id IN (?)' with params [4]:

sqlSTATE[42S22]: Column not found: 1054 UnkNown column 'u0_.id' in 'field list'

据我所知,在数据库中插入是好的,但是当涉及到显示时,它会在 Mairie 表中查找 id 列(仅存在于 User 类中)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。