How to make nullable a relationship ManytoOne

I have one relationship ManyToOne between two entities:Usuario and Departamento,Some users dont have any departaments,i want to make nullable the field departamento in the entity Usuario,how to make this.My code looks like this:

<?php

namespace CECMED\TarifaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Usuario
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="CECMED\TarifaBundle\Entity\UsuarioRepository")
 * @UniqueEntity("email")
  */
class Usuario implements UserInterface{

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     * @Assert\NotBlank(message="No debe dejar este campo vacío")
     * @ORM\Column(name="nombre", type="string",unique=true, length=255)
     */
    private $nombre;

    /**
     * @var string
     * @Assert\NotBlank(message="No debe dejar este campo vacío")
     * @ORM\Column(name="apellidos", type="string", length=255)
     */
    private $apellidos;

    /**
     * @var string
     * @Assert\NotBlank(message="No debe dejar este campo vacío")
     * @ORM\Column(name="email", type="string", length=255)
     */
    private $email;


    /**
     * @ORM\ManyToOne(targetEntity="Departamento", inversedBy="usuarios")
     * @ORM\JoinColumn(name="id_departamento", referencedColumnName="id")
     */
    private $departamento;

Upvotes: 4

Views: 5169

Answers (1)

DonCallisto
DonCallisto

Reputation: 29912

/**
 * @ORM\ManyToOne(targetEntity="Departamento", inversedBy="usuarios")
 * @ORM\JoinColumn(name="id_departamento", referencedColumnName="id", nullable=true)
 */
private $departamento;

As shown above you should put the attribute nullable onto JoinColumn

Don't forget

to update your schema doctrine:schema:update --force

Moreover if you had already generated your setters, remember to change it in order to accept nullable values, like this setDepartamento(Departamento $departamento = null)

Upvotes: 6

Related Questions