0
votes

i have an entity called "FosUser" :

<?php

namespace techeventBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * FosUser
 *
 * @ORM\Table(name="fos_user", uniqueConstraints={@ORM\UniqueConstraint(name="UNIQ_957A6479A0D96FBF", columns={"email_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A647992FC23A8", columns={"username_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A6479C05FB297", columns={"confirmation_token"})}, indexes={@ORM\Index(name="IDX_957A647914013572", columns={"copon_id"})})
 * @ORM\Entity
 */
class FosUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="username", type="string", length=180, nullable=true)
     */
    private $username;

    /**
     * @var string
     *
     * @ORM\Column(name="username_canonical", type="string", length=180, nullable=true)
     */
    private $usernameCanonical;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=180, nullable=false)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="email_canonical", type="string", length=180, nullable=true)
     */
    private $emailCanonical;

    /**
     * @var boolean
     *
     * @ORM\Column(name="enabled", type="boolean", nullable=true)
     */
    private $enabled;

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

    /**
     * @var string
     *
     * @ORM\Column(name="password", type="string", length=255, nullable=false)
     */
    private $password;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="last_login", type="datetime", nullable=true)
     */
    private $lastLogin;

    /**
     * @var string
     *
     * @ORM\Column(name="confirmation_token", type="string", length=180, nullable=true)
     */
    private $confirmationToken;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="password_requested_at", type="datetime", nullable=true)
     */
    private $passwordRequestedAt;

    /**
     * @var array
     *
     * @ORM\Column(name="roles", type="array", nullable=true)
     */
    private $roles;

        /**
         * @var string
         *
         * @ORM\Column(name="nom", type="string", length=255, nullable=false)
         */
        private $nom;

        /**
         * @var string
         *
         * @ORM\Column(name="prenom", type="string", length=255, nullable=false)
         */
        private $prenom;

        /**
         * @var string
         *
         * @ORM\Column(name="tel", type="string", length=30, nullable=true)
         */
        private $tel;

        /**
         * @var integer
         *
         * @ORM\Column(name="age", type="integer", nullable=false)
         */
        private $age;

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

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

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

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

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

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

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

        /**
         * @var \Coupon
         *
         * @ORM\ManyToOne(targetEntity="Coupon")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="copon_id", referencedColumnName="id")
         * })
         */
        private $copon;


    }

i have deleted fields in this entity and changed the default value of fields to null ('nullable = true') like this :

<?php

namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * FosUser
 *
 * @ORM\Table(name="fos_user", uniqueConstraints={@ORM\UniqueConstraint(name="UNIQ_957A6479A0D96FBF", columns={"email_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A647992FC23A8", columns={"username_canonical"}), @ORM\UniqueConstraint(name="UNIQ_957A6479C05FB297", columns={"confirmation_token"})}, indexes={@ORM\Index(name="IDX_957A647914013572", columns={"copon_id"})})
 * @ORM\Entity
 */
class FosUser extends BaseUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=255, nullable=true)
     */
    protected $nom;

    /**
     * @var string
     *
     * @ORM\Column(name="prenom", type="string", length=255, nullable=true)
     */
    protected $prenom;

    /**
     * @var string
     *
     * @ORM\Column(name="tel", type="string", length=30, nullable=true)
     */
    protected $tel;

    /**
     * @var integer
     *
     * @ORM\Column(name="age", type="integer", nullable=false)
     */
    protected $age;

    /**
     * @var string
     *
     * @ORM\Column(name="sexe", type="string", length=255, nullable=true)
     */
    protected $sexe;

    /**
     * @var string
     *
     * @ORM\Column(name="fonction", type="string", length=255, nullable=true)
     */
    protected $fonction;

    /**
     * @var string
     *
     * @ORM\Column(name="address", type="string", length=255, nullable=true)
     */
    protected $address;

    /**
     * @var string
     *
     * @ORM\Column(name="categorie", type="string", length=255, nullable=true)
     */
    protected $categorie;

    /**
     * @var string
     *
     * @ORM\Column(name="type", type="string", length=255, nullable=true)
     */
    protected $type;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="string", length=255, nullable=true)
     */
    protected $description;

    /**
     * @var string
     *
     * @ORM\Column(name="role", type="string", length=255, nullable=true)
     */
    protected $role;

    /**
     * @var \Coupon
     *
     * @ORM\ManyToOne(targetEntity="Coupon")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="copon_id", referencedColumnName="id")
     * })
     */
    protected $copon;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

i had those errors after updating the database schema :

In AbstractMySQLDriver.php line 112:

An exception occurred while executing 'ALTER TABLE fos_user CHANGE username username VARCHAR(180) NOT NULL, CHANGE username_canonical username_canonic al VARCHAR(180) NOT NULL, CHANGE email_canonical email_canonical VARCHAR(18 0) NOT NULL, CHANGE enabled enabled TINYINT(1) NOT NULL, CHANGE roles roles LONGTEXT NOT NULL COMMENT '(DC2Type:array)', CHANGE nom nom VARCHAR(255) D EFAULT NULL, CHANGE prenom prenom VARCHAR(255) DEFAULT NULL':

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

In PDOConnection.php line 106:

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

In PDOConnection.php line 104:

SQLSTATE[22004]: Null value not allowed: 1138 Utilisation incorrecte de la valeur NULL

1
and changed the default value of fields to null like this Maybe they were not null for a reason? Null value not allowed: - thats because the DB schema is set to NOT NULL for the row. So either change the DB so that it will accept null values, or put something other then null back in the ones that are not null. Or insure that when you create a new record from a given entity that those required fields are populated.ArtisticPhoenix
is the error only about null values ?YassinovTrabajaa
It looks like there are few rows with NULL value.Update all null values to a default value, then try to do an update.KubiRoazhon
@KubiRoazhon still getting the same errorYassinovTrabajaa
Have you already some rows in your table ?KubiRoazhon

1 Answers

0
votes

Your code is right! Previously you haven't used FOUser class, your fos_user table have already username, emailCanonical, etc ... Then when you extend FOSUser and update database schema, your current entity doesn't accept null value for username, etc .. (It's FOSUser logic)

Solution, you have to delete your fos_user table before updating the database schema