Исключение отображения доктрины, хотя класс существует - PullRequest
0 голосов
/ 13 мая 2018

Я новичок в symfony4, так что извините, если мой вопрос глуп, но я работаю над этой проблемой три дня, не найдя решения.Итак, у меня есть сущность "Professionnel" и сущность "Coordonnees", и я хочу визуализировать в виде таблицы с профессионалами и их местоположением.Он уже работает с двумя другими классами в моем приложении Участники и Спонсоры.Для моей сущности "Professionnel" у меня есть эта ошибка: Ошибка возврата

Это моя сущность "Professionnel":

<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity(repositoryClass="App\Repository\ProfessionnelRepository")
 */
class Professionnel
{
/**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

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

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

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

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

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

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Coordonnees")
 */
private $coordonnees;

public function getId()
{
    return $this->id;
}

public function getNomProfessionnel(): ?string
{
    return $this->nomProfessionnel;
}

public function setNomProfessionnel(string $NomProfessionnel): self
{
    $this->nomProfessionnel = $NomProfessionnel;

    return $this;
}

public function getPrenomProfessionnel(): ?string
{
    return $this->prenomProfessionnel;
}

public function setPrenomProfessionnel(string $PrenomProfessionnel): self
{
    $this->prenomProfessionnel = $PrenomProfessionnel;

    return $this;
}

public function getFonctionProfessionnel(): ?string
{
    return $this->fonctionProfessionnel;
}

public function setFonctionProfessionnel(?string $FonctionProfessionnel): self
{
    $this->fonctionProfessionnel = $FonctionProfessionnel;

    return $this;
}

public function getObservationsProfessionnel(): ?string
{
    return $this->observationsProfessionnel;
}

public function setObservationsProfessionnel(?string $ObservationsProfessionnel): self
{
    $this->observationsProfessionnel = $ObservationsProfessionnel;

    return $this;
}

public function getTitreProfessionnel(): ?string
{
    return $this->titreProfessionnel;
}

public function setTitreProfessionnel(?string $TitreProfessionnel): self
{
    $this->titreProfessionnel = $TitreProfessionnel;

    return $this;
}

public function getCoordonnees(): ?Coordonnees
{
    return $this->coordonnees;
}

public function setCoordonnees(?Coordonnees $coordonnees): self
{
    $this->coordonnees = $coordonnees;

    return $this;
}
}

Мой ProfessionnelRepository

<?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();
}

Мой контроллер

<?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
    ));
    }
}

Поэтому я не понимаю, почему он работает с двумя из моих сущностей, а не с моей сущностью "Professionnel".Заранее спасибо за ваши ответы и извините за мой примерный английский

Kourilles

1 Ответ

0 голосов
/ 13 мая 2018

Скорее всего, это зависит от вашего 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
...