数分前、Doctrine2 でエラーを見つけました。
エンティティにいくつかのフィールドを追加してから、mysql テーブルを更新し、新しいデータがテーブルに保存されていないことに気付く前に永続化します。
"->getXXX()" の値で var_dump を試みたところ、正しい結果が得られました。
使用されるコードは次のとおりです。
$user->setName($name);
$user->setSurname($surname);
if($country)
$user->setCountry($country->getId());
//New code
if($province > 0)
$user->setProvince($province);
if($town > 0)
$user->setTown($town);
var_dump($user->getProvince(), $user->getTown()); //Works OK
$em->persist($user); // Only persists values before Province.
$em->flush();
ありがとうございます。
編集済み
私のエンティティに関する情報:
class Users
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=50)
*/
private $name;
/**
* @var string $surname
*
* @ORM\Column(name="surname", type="string", length=95)
*/
private $surname;
/**
* @var string $mail
*
* @ORM\Column(name="mail", type="string", length=80, unique=true)
*/
private $mail;
/**
* @var string $password
*
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* @var $country
*
* @ORM\Column(name="country", type="integer")
*/
private $country;
/**
* @var $province
*
* @ORM\Column(name="province", type="integer")
*/
private $province;
/**
* @var $town
*
* @ORM\Column(name="town", type="integer")
*/
private $town;
}
国、州、町は、同じ名前のテーブルの ID です。ManytoOne アソシエーションでフィールドの型を変更しようとしましたが、Doctrine2 で生成された SQL でエラーが発生します。キャッシュエラーのようですが、解決できません。