title: Categorie could not be converted to string
body: <p>To start off I am really new at programming, and especialy Symfony/ORM. I am getting lessons, in Dutch. That's why the Dutch naming but, I am having problems with getting a twig template to show a many to one relation. I keep getting errors that it can't be converted to string, I have googled for hours now and I got another error that variable is null. Yet that can not be the case. I will add the codes below.</p>
  
  <p>The errors I get are;</p>
  
  <blockquote>
    <p>[1/2] ContextErrorException: Catchable Fatal Error: Object of class Proxies__CG__\AppBundle\Entity\Categorie could not be converted to string </p>
  </blockquote>
  
  <p>and</p>
  
  <blockquote>
    <p>[2/2] Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class Proxies__CG__\AppBundle\Entity\Categorie could not be converted to string"). </p>
  </blockquote>
  
  <p><strong>Artikel.php</strong>
      
  
  <pre><code>namespace AppBundle\Entity;
  
  use Doctrine\ORM\Mapping as ORM;
  use Symfony\Component\Validator\Constraints as Assert;
  use Doctrine\Common\Collections\ArrayCollection;
  //link naar tabel
  /**
  * Artikel
  *
  * @ORM\Table(name="artikel")
  * @ORM\Entity(repositoryClass="AppBundle\Repository\ArtikelRepository")
  */
  class Artikel
  {
  //class artikel met alle items die in de tabel staan.
  //per items staat aangegeven wat voor type het is en aanvullende gegevens.
  /**
   * @var int
   *
   * @ORM\Column(name="Artikelnummer", type="integer", unique=true)
   * @ORM\Id
   */
  private $artikelnummer;
  
  /**
   * @var string
   *
   * @ORM\Column(name="Omschrijving", type="string", length=255, nullable=true)
   */
  private $omschrijving;
  
  /**
  * @var string
  * @ORM\ManyToOne(targetEntity="Categorie", inversedBy="artikelen")
  * @ORM\JoinColumn(name="categorie", referencedColumnName="id")
   */
  
   private $categorie;
  
  /**
   * @var string
   *
   * @ORM\Column(name="Technischespecificaties", type="string", length=255 , nullable=true)
   */
  private $technischespecificaties;
  
  /**
   * @var string
   *
   * @ORM\Column(name="Status", type="string", length=12, nullable=false)
   */
  private $status;
  
  /**
   * @var string
   *
   * @ORM\Column(name="magazijnlocatie", type="string", length=6, nullable=false) 
   * @Assert\Length(
   *      min = 6,
   *      max = 6,
   *      exactMessage = "Invoerwaarde te lang")
   * @Assert\Regex(
   *    pattern = "/^20|[0-1]{1}[0-9]{1}\/[A-Z][0]{1}[0-9]{1}|10$/i",
   *    match=true,
   *    message="Ongeldige locatie [ERROR1]")
   * @Assert\Regex(
   *    pattern = "/^[2]{1}[1-9]{1}\/[A-Z]{1}[0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR2]")
   * @Assert\Regex(
   *    pattern = "/^[3-9]{1}[0-9]{1}\/[A-Z][0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR3]")
   * @Assert\Regex(
   *    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][1]{1}[1-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR4]")
   * @Assert\Regex(
   *    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][2-9]{1}[0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR5]")
   * @Assert\Regex(
   *    pattern = "/^[0-9A-Za-z]+$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR6]")
   */
  private $magazijnlocatie;
  
  /**
   * @var int
   *
   * @ORM\Column(name="Inkoopprijs", type="decimal", precision=10, scale=2)
   */
  private $inkoopprijs;
  
  /**
   * @var string
   *
   * @ORM\Column(name="CodeVervangendArtikel", type="integer")
   */
  private $CodeVervangendArtikel;
  
  /**
   * @var string
   *
   * @ORM\Column(name="MinimumVoorraad", type="string")
   */
  private $minimumVoorraad;
  
  /**
   * @var string
   *
   * @ORM\Column(name="VoorraadInAantal", type="integer")
   */
  private $voorraadInAantal;
  
  /**
   * @var string
   *
   * @ORM\Column(name="Bestelserie", type="integer")
   */
  private $bestelserie;
  
  
  
  //set en gets van de items
  /**
   * Set artikelnummer
   *
   * @param integer $artikelnummer
   *
   * @return Artikel
   */
  public function setArtikelnummer($artikelnummer)
  {
      $this-&gt;artikelnummer = $artikelnummer;
  
      return $this;
  }
  
  /**
   * Get artikelnummer
   *
   * @return int
   */
  public function getArtikelnummer()
  {
      return $this-&gt;artikelnummer;
  }
  
  /**
   * Set categorie
   *
   * @param string $categorie
   *
   * @return Artikel
   */
  public function setCategorie($categorie)
  {
      $this-&gt;categorie = $categorie;
  
      return $this;
  }
  public function __toString()
   {     return $this-&gt;categorie; }
  /**
   * Get categorie
   *
   * @return string
   */
  
  
   public function getCategorie()
  {
      return $this-&gt;categorie;
  }
  
  /**
   * Set omschrijving
   *
   * @param string $omschrijving
   *
   * @return Artikel
   */
  public function setOmschrijving($omschrijving)
  {
      $this-&gt;omschrijving = $omschrijving;
  
      return $this;
  }
  
  /**
   * Get omschrijving
   *
   * @return string
   */
  public function getOmschrijving()
  {
      return $this-&gt;omschrijving;
  }
  
  /**
   * Set technischespecificaties
   *
   * @param string $technischespecificaties
   *
   * @return Artikel
   */
  public function setTechnischespecificaties($technischespecificaties)
  {
      $this-&gt;technischespecificaties = $technischespecificaties;
  
      return $this;
  }
  
  /**
   * Get technischespecificaties
   *
   * @return string
   */
  public function getTechnischespecificaties()
  {
      return $this-&gt;technischespecificaties;
  }
  
  /**
   * Set status
   *
   * @param string $status
   *
   * @return Artikel
   */
  public function setStatus($status)
  {
      $this-&gt;status = $status;
  
      return $this;
  }
  
  /**
   * Get status
   *
   * @return string
   */
  public function getStatus()
  {
      return $this-&gt;status;
  }
  
  /**
   * Set magazijnlocatie
   *
   * @param string $magazijnlocatie
   *
   * @return Artikel
   */
  public function setMagazijnlocatie($magazijnlocatie)
  {
      $this-&gt;magazijnlocatie = $magazijnlocatie;
  
      return $this;
  }
  
  /**
   * Get magazijnlocatie
   *
   * @return string
   */
  public function getMagazijnlocatie()
  {
      return $this-&gt;magazijnlocatie;
  }
  
  /**
   * Set inkoopprijs
   *
   * @param integer $inkoopprijs
   *
   * @return Artikel
   */
  public function setInkoopprijs($inkoopprijs)
  {
      $this-&gt;inkoopprijs = $inkoopprijs;
  
      return $this;
  }
  
  /**
   * Get inkoopprijs
   *
   * @return int
   */
  public function getInkoopprijs()
  {
      return $this-&gt;inkoopprijs;
  }
  
  /**
   * Set CodeVervangendArtikel
   *
   * @param string $CodeVervangendArtikel
   *
   * @return Artikel
   */
  public function setCodeVervangendArtikel($CodeVervangendArtikel)
  {
      $this-&gt;CodeVervangendArtikel = $CodeVervangendArtikel;
  
      return $this;
  }
  
  /**
   * Get CodeVervangendArtikel
   *
   * @return string
   */
  public function getCodeVervangendArtikel()
  {
      return $this-&gt;CodeVervangendArtikel;
  }
  
  /**
   * Set minimumVoorraad
   *
   * @param string $minimumVoorraad
   *
   * @return Artikel
   */
  public function setMinimumVoorraad($minimumVoorraad)
  {
      $this-&gt;minimumVoorraad = $minimumVoorraad;
  
      return $this;
  }
  
  /**
   * Get minimumVoorraad
   *
   * @return string
   */
  public function getMinimumVoorraad()
  {
      return $this-&gt;minimumVoorraad;
  }
  
  /**
   * Set voorraadInAantal
   *
   * @param string $voorraadInAantal
   *
   * @return Artikel
   */
  public function setVoorraadInAantal($voorraadInAantal)
  {
      $this-&gt;voorraadInAantal = $voorraadInAantal;
  
      return $this;
  }
  
  /**
   * Get voorraadInAantal
   *
   * @return string
   */
  public function getVoorraadInAantal()
  {
      return $this-&gt;voorraadInAantal;
  }
  
  /**
   * Set bestelserie
   *
   * @param string $bestelserie
   *
   * @return Artikel
   */
  public function setBestelserie($bestelserie)
  {
      $this-&gt;bestelserie = $bestelserie;
  
      return $this;
  }
  
  /**
   * Get bestelserie
   *
   * @return string
   */
  public function getBestelserie()
  {
      return $this-&gt;bestelserie;
  }
  }
  </code></pre>
  
  <p><strong>Categorie.php</strong></p>
  
  <pre><code>&lt;?php
  
   namespace AppBundle\Entity;
  
  use Doctrine\ORM\Mapping as ORM;
  use Symfony\Component\Validator\Constraints as Assert;
  use Doctrine\Common\Collections\ArrayCollection;
  
   /**
   * Categorie
   *
   * @ORM\Table(name="categorie")
   * @ORM\Entity(repositoryClass="AppBundle\Repository\CategorieRepository")
   */
  class Categorie
  {
  
  /**
   * @var string
   *
   * @ORM\Column(name="id", type="string", length=20, unique=true)
   * @ORM\Id
   */
  private $id;
  
  /**
   * @var string
   *
   * @ORM\Column(name="beschrijving", type="string", length=255)
   */
  private $beschrijving;
  
  /**
  * @ORM\OneToMany(targetEntity="Artikel", mappedBy = "categorie")
  */
  private $artikelen;
  
  /**
   * @var string
   *
   * @ORM\Column(name="magazijnlocatie", type="string", length=6, nullable=false) 
   * @Assert\Length(
   *      min = 6,
   *      max = 6,
   *      exactMessage = "Invoerwaarde te lang")
   * @Assert\Regex(
   *    pattern = "/^20|[0-1]{1}[0-9]{1}\/[A-Z][0]{1}[0-9]{1}|10$/i",
   *    match=true,
   *    message="Ongeldige locatie [ERROR1]")
   * @Assert\Regex(
   *    pattern = "/^[2]{1}[1-9]{1}\/[A-Z]{1}[0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR2]")
   * @Assert\Regex(
   *    pattern = "/^[3-9]{1}[0-9]{1}\/[A-Z][0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR3]")
   * @Assert\Regex(
   *    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][1]{1}[1-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR4]")
   * @Assert\Regex(
   *    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][2-9]{1}[0-9]{1}$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR5]")
   * @Assert\Regex(
   *    pattern = "/^[0-9A-Za-z]+$/i",
   *    match=false,
   *    message="Ongeldige locatie [ERROR6]")
   */
  private $magazijnlocatie;
  
  /**
   * Set id
   *
   * @param string $id
   *
   * @return Categorie
   */
  public function setId($id)
  {
      $this-&gt;id = $id;
  
      return $this;
  }
  
  /**
   * Get id
   *
   * @return string
   */
  public function getId()
  {
      return $this-&gt;id;
  }
   public function toString()
      {
          return $this-&gt;getId();
      }
  /**
   * Set beschrijving
   *
   * @param string $beschrijving
   *
   * @return Categorie
   */
  public function setBeschrijving($beschrijving)
  {
      $this-&gt;beschrijving = $beschrijving;
  
      return $this;
  }
  
  /**
   * Get beschrijving
   *
   * @return string
   */
  public function getBeschrijving()
  {
      return $this-&gt;beschrijving;
  }
  
  /**
   * Set magazijnlocatie
   *
   * @param string $magazijnlocatie
   *
   * @return Artikel
   */
  public function setMagazijnlocatie($magazijnlocatie)
  {
      $this-&gt;magazijnlocatie = $magazijnlocatie;
  
      return $this;
  }
  
  /**
   * Get magazijnlocatie
   *
   * @return string
   */
  public function getMagazijnlocatie()
  {
      return $this-&gt;magazijnlocatie;
  }
  
  public function _construct()
  {
    $this-&gt;artikelen = new ArrayCollection();
  }
  }
  </code></pre>
  
  <p><strong>controller</strong></p>
  
  <pre><code>use Symfony\Component\HttpFoundation\Response;
  
  
  //use van de entiteiten
  use AppBundle\Entity\Artikel;
  use AppBundle\Form\Type\Artikel0Type;
  use AppBundle\Form\Type\ArtikelType;
  use AppBundle\Entity\Categorie;
  
  
  class ArtikelController extends Controller
  {
  
  
  /**
  * @Route("/artikel/alle", name="alleartikelen")
  */
  
  Public function alleArtikelen(Request $request) {
      $artikelen = $this-&gt;getDoctrine()-&gt;getRepository("AppBundle:Artikel")-&gt;findAll();
      return new Response($this-&gt;render('artikel.html.twig', array('artikelen' =&gt; $artikelen)));
  
  }
  
  
  /**
           * @Route("/artikel/nieuw", name="nieuwartikel")
           */
          public function nieuwArtikel(Request $request) {
              $nieuwArtikel = new Artikel();
              $form = $this-&gt;createForm(ArtikelType::class, $nieuwArtikel);
  
              $form-&gt;handleRequest($request);
              if ($form-&gt;isSubmitted() &amp;&amp; $form-&gt;isValid()) {
                  $em = $this-&gt;getDoctrine()-&gt;getManager();
                  $em-&gt;persist($nieuwArtikel);
                  $em-&gt;flush() ;
                  return $this-&gt;redirect($this-&gt;generateurl("alleartikelen")) ;
              }
                  return new Response($this-&gt;render('form.html.twig', array('form' =&gt; $form-&gt;createView())));
          }
  
          /**
                   * @Route("/artikel/wijzig/{artikelnummer}", name="artikelwijzigen")
                   */
                  public function wijzigArtikel(Request $request, $artikelnummer) {
  
                      $bestaandArtikel = $this-&gt;getDoctrine()-&gt;getRepository("AppBundle:Artikel")-&gt;find($artikelnummer);
                      $form = $this-&gt;createForm(Artikel0Type::class, $bestaandArtikel);
  
                      $form-&gt;handleRequest($request);
                      if ($form-&gt;isSubmitted() &amp;&amp; $form-&gt;isValid()) {
                          $em = $this-&gt;getDoctrine()-&gt;getManager();
                          $em-&gt;persist($bestaandArtikel);
                          $em-&gt;flush() ;
                          return $this-&gt;redirect($this-&gt;generateurl("alleartikelen", array("artikelnummer"=&gt;$bestaandArtikel-&gt;getArtikelnummer()))) ;
                      }
                      return new Response($this-&gt;render('form.html.twig', array('form' =&gt; $form-&gt;createView())));
                  }
  
                  /**
                           * @Route("/artikel/verwijder/{artikelnummer}", name="artikelverwijderen")
                           */
                          public function verwijderArtikel(Request $request, $artikelnummer) {
                                  $em = $this-&gt;getDoctrine()-&gt;getManager();
                                  $bestaandArtikel = $em-&gt;getRepository("AppBundle:Artikel")-&gt;find($artikelnummer);
                                  $em-&gt;remove($bestaandArtikel);
                                  $em-&gt;flush() ;
                                  return $this-&gt;redirect($this-&gt;generateurl("alleartikelen"));
                              }
  
  
  
  
  
  }
  </code></pre>
  
  <p>And then the twig itself;</p>
  
  <pre><code>{% extends 'base.html.twig' %}
  {% block body %}
  &lt;h1&gt;Overzicht Artikelen&lt;/h1&gt;
  &lt;h2&gt;&lt;a href="{{ path('nieuwartikel',{}) }}"&gt;Nieuw Artikel&lt;/a&gt;&lt;/h2&gt;
  &lt;ol&gt;
      {% for artikel in artikelen %}
          &lt;li style="color:darkgreen"&gt;
              Artikelnummer: {{artikel.artikelnummer}} &lt;br&gt;
              Omschrijving: {{artikel.omschrijving}} &lt;br&gt;
              Technischespecificaties: {{artikel.technischespecificaties}} &lt;br&gt;
              Categorie: {{artikel.categorie}} &lt;br&gt;
              Magazijnlocatie: {{artikel.magazijnlocatie}} &lt;br&gt;
              Inkoopprijs: {{artikel.inkoopprijs}} &lt;br&gt;
              CodeVervangendArtikel: {{artikel.CodeVervangendArtikel}} &lt;br&gt;
              MinimumVoorraad: {{artikel.minimumVoorraad}} &lt;br&gt;
              VoorraadInAantal: {{artikel.voorraadInAantal}} &lt;br&gt;
              Bestelserie: {{artikel.bestelserie}} &lt;br&gt;
  
              &lt;a href="{{ path('artikelwijzigen',
  {'artikelnummer':artikel.artikelnummer}) }}"&gt;Wijzig&lt;/a&gt;
              &lt;a href="{{ path('artikelverwijderen',
  {'artikelnummer':artikel.artikelnummer}) }}"&gt;Verwijder&lt;/a&gt;
      &lt;/li&gt;&lt;br&gt;
  {% endfor %}
  &lt;ol&gt;
  {% endblock %}
  </code></pre>