<?php

// src/OC/PlatformBundle/Entity/Image

namespace OC\PlatformBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

// N'oubliez pas ce use :

use Symfony\Component\HttpFoundation\File\UploadedFile;

/**

 * @ORM\Entity(repositoryClass="OC\PlatformBundle\Entity\ImageRepository")

 */

class Image

{

  /**

   * @ORM\Column(name="id", type="integer")

   * @ORM\Id

   * @ORM\GeneratedValue(strategy="AUTO")

   */

  private $id;

  /**

   * @ORM\Column(name="url", type="string", length=255)

   */

  private $url;

  /**

   * @ORM\Column(name="alt", type="string", length=255)

   */

  private $alt;

  private $file;

  public function getFile()

  {

    return $this->file;

  }

  public function setFile(UploadedFile $file = null)

  {

    $this->file = $file;

  }

  // ...

j'ai voulu modifier l'entite image en ajoutant un attribut file et j'ai ajoute les getters et setters a la main sans passe par doctrine:generate:entities le probleme c que l'attribut file n'ai pas ajoute a la base de donnees comment resoudre cette probleme
merci

5 réponses


Il faut que tu indique à Doctrine que c'est un champ avec les annotations @ORM (comme pour les autres)

houssem
Auteur

le cour que je suis entrain de le suivre a indiquer que ce n'est pas necessaire
http://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony2/creer-des-formulaires-avec-symfony2

houssem
Auteur

merci j'ai resolu le probleme il faut enleve $advert->getImage()->upload() du controleur

Le probème c'est que pour générer un champ dans la base, il lui faut une annotation dans ton cas afin de lui permettre de préciser les informations nécessaires à sa création. Sans cela SF considérera cette ligne comme une simple variable, et on comme un champ pour BDD

PS: Selon ton lien:

Notez bien que je n'ai pas mis d'annotation pour Doctrine : ce n'est pas cet attribut $file que nous allons persister par la suite, on ne met donc pas d'annotation. Par contre, c'est bien cet attribut qui servira pour le formulaire, et non les autres.

Par conséquent logique qu'il ne crée pas en base ce champ.

Salut,

Juste en passant, si tu veux faire de l'upload, je te conseil de suivre la documentation sur la site de SF2. j'ai appris de cette façon et lorsque l'on prend bien le temps de tout lire sa marche.

Bonne continuation