2017-08-09 4 views
1

私のプロジェクトでsymfony 2.4とpostgresqlを使用しています。私のロケールすべてが正常に動作しますが、サーバー上で、それはエラーにsymfony2で新しい列が認識されないキャッチコピーの例外 'Doctrine ORM Query QueryException

"PHP message: PHP Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message 'SELECT p.id, p.username, p.email, p.isEmailConfirmed FROM CityDomGameBundle:Player p WHERE p.email = (:email) AND p.username != (:username)' in /var/... 

エラーを与える私は私のテーブルに新しい列isEmailConfirmedを追加

$duplicatedEmails = $em->createQueryBuilder() 
       ->select('p.id, p.username, p.email, p.isEmailConfirmed') 
       ->from('CityDomGameBundle:Player', 'p') 
       ->where('p.email = (:email)') 
       ->andWhere('p.username != (:username)') 
       ->setParameter(':email', $email) 
       ->setParameter(':username', $username) 
       ->getQuery() 
       ->getResult(); 

ここで起こるので、symfonyはそれを認識しないようにそれはそうで。 selectの文からp.isEmailConfirmedを削除すると動作します。

は、ここでは、エンティティコード

/** 
* @var boolean $isEmailConfirmed 
* 
* @ORM\Column(name="isemailconfirmed", type="boolean") 
*/ 
private $isEmailConfirmed; 

及び方法

/** 
* @return boolean 
*/ 
public function getIsEmailConfirmed() 
{ 
    return $this->isEmailConfirmed; 
} 

/** 
* @param $isEmailConfirmed 
* @return $this 
*/ 
public function setIsEmailConfirmed($isEmailConfirmed) 
{ 
    $this->isEmailConfirmed = $isEmailConfirmed; 

    return $this; 
} 

私はcache:clearにしようとしたが、それは助けにはならないのです。何か案が?スキーマ:PHPアプリ/コンソール教義を実行した後

UPDATE

それ--force更新がエラー

[Doctrine\DBAL\Exception\NotNullConstraintViolationException]          
    An exception occurred while executing 'ALTER TABLE player ADD 
    isemailconfirmed BOOLEAN NOT NULL': 
    SQLSTATE[23502]: Not null violation: 7 ERROR: column 
    "isemailconfirmed" contains null values 

[Doctrine\DBAL\Driver\PDOException]                
SQLSTATE[23502]: Not null violation: 7 ERROR: column 
"isemailconfirmed" contains null values 

を示したが、私は列を追加したときに、この列のデフォルト値はfalse で、ここでのクエリです

alter table player add column isEmailConfirmed boolean default false; 
+1

をご使用のサーバー上schameを更新したことがありますか? bin/console doctrine:schema:update --force? –

+1

はあなたのデータベースの 'isemailconfirmed'ですか? –

+0

@Alessandro Minoccheri今すぐ試してみます –

答えて

0

最初に現在のテーブルを更新してください:

update player set isemailconfirmed = false where isemailconfirmed is null 

またはこのような注釈変更:

/** 
* @var boolean $isEmailConfirmed 
* 
* @ORM\Column(name="isemailconfirmed", type="boolean", nullable=true) 
*/ 
private $isEmailConfirmed; 
関連する問題