即使该类确实存在,也会发出Doctrine映射异常

时间:2018-05-12 22:22:32

标签: symfony doctrine

我是symfony4的新手,很抱歉,如果我的问题很愚蠢但是我在这个问题上工作了三天而没有找到解决方案。 所以我有一个实体“专业人士”和一个实体“Coordonnees”,我希望在一个视图中呈现一个带有专业知识和位置的表格。它已经与我的应用程序成员和赞助商中的其他两个类一起使用。对于我的实体“Professionnel”,我有一个错误: Error return

这是我的实体“专业人士”:

<?php
namespace App\Repository;
use App\Entity\Professionnel;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;

/**
 * @method Professionnel|null find($id, $lockMode = null, $lockVersion =          null)
 * @method Professionnel|null findOneBy(array $criteria, array $orderBy = null)
 * @method Professionnel[]    findAll()
 * @method Professionnel[]    findBy(array $criteria, array $orderBy = null,     $limit = null, $offset = null)
 */
class ProfessionnelRepository extends ServiceEntityRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, Professionnel::class);
    }

    public function getProEtAdresses(): array
    {
        $conn = $this->getEntityManager()->getConnection();

        $sql = '
            SELECT * 
            FROM coordonnees 
            INNER JOIN `professionnel`
            ON `professionnel`.`coordonnees_id`= `coordonnees`.`id`
            ';
        $stmt = $conn->prepare($sql);
        $stmt->execute();
}

我的ProfessionnelRepository

<?php
// GestionASM17/src/Controller/ProfessionnelsController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Coordonnees;

class ProfessionnelsController extends Controller
{

    public function afficherProfessionnels()
    {

//Récupère sous forme de tableau les Professionnels et leurs adresses
    $ListeProEtAdresse = $this->getDoctrine()
    ->getRepository(Professionnel::class)
    ->getProEtAdresse();

    return $this->render('GestionASM17/professionnels.html.twig', array(
        'ListeProEtAdresse'=>$ListeProEtAdresse
    ));
}

public function detailProfessionnels($id)
{
//Récupère les données du Professionnel passé en paramètre dans une instance de professionnel
    $Pro = $this->getDoctrine()
    ->getRepository(Professionnel::class)
    ->find($id);  

// Récupère les coordonnées du Professionnel passé en paramètre
    $Coordonnees = $this->getDoctrine()
    ->getRepository(Coordonnees::class)
    ->find($Pro->getCoordonnees());  

//Renvoi de la vue
    return $this->render('GestionASM17/detailProfessionnels.html.twig', array(
        'Pro'=>$Pro ,
        'Coordonnees'=>$Coordonnees
    ));
    }
}

我的控制器

Foo.foo

所以我不会理解为什么它与我的两个实体合作而不是我的实体“专业人士”。 提前感谢您的答案,并原谅我的近似英语

Kourilles

1 个答案:

答案 0 :(得分:2)

很可能取决于Professionnel::class ProfessionnelsController中的use来电。实际上,您没有在控制器中为该类添加任何App\Controller语句。这意味着所述类将从控制器Professionnel::class的同一名称空间加载,但当然没有use具有该名称空间。

因此,您只需在ProfessionnelsController

中为该课程添加正确的<?php // GestionASM17/src/Controller/ProfessionnelsController.php namespace App\Controller; ... use App\Entity\Professionnel; class ProfessionnelsController extends Controller 语句
<dependency>
     <groupId>mygroup</groupId>
     <artifactId>B<artifactId>
</dependency>