私は私のモデルに教義の二つの概念を使用する上で誤った値を持っています親クラスのインスタンスでは、ライフサイクルコールバックで更新される親プロパティは間違っています。私のデータベースの親クラステーブルにある値ではありません。教義クラステーブル継承プロパティは、クエリ
親{抽象}クラス:ユーザーが
use DateTime;
/**
* User
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="MyProject\CoreBundle\Repository\UserRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="entity_name", type="string")
* @ORM\DiscriminatorMap({"member" = "Member", "administrator" = "Administrator"})
* @ORM\HasLifecycleCallbacks()
*/
abstract class User implements AdvancedUserInterface, Serializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
protected $createdAt;
/**
* @var DateTime
*
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
// ...
public function __construct()
{
$this->createdAt = new DateTime();
$this->updatedAt = new DateTime();
// ...
return $this;
}
/**
* @ORM\PreUpdate
*/
public function onPreUpdate()
{
$this->updatedAt = new DateTime();
}
}
子クラス:メンバーコントローラここ
use MyProject\CoreBundle\Entity\Member;
public function someAction(Member $member)
{
$em = $this->getDoctrine()->getManager();
$member = $em->getRepository(Member::class)->find(1);
exit(var_dump($member->getUpdatedAt()));
// --> date of today, why?
}
に続い
/**
* Member
*
* @ORM\Table(name="members")
* @ORM\Entity(repositoryClass="MyProject\CoreBundle\Repository\MemberRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Member extends User
{
// ...
public function __construct()
{
parent::__construct();
// ...
return $this;
}
}
は私のデータベースの内容の抽出物である
// users
|----|---------------------|---------------------|-------------|
| id | created_at | updated_at | entity_name |
|----|---------------------|---------------------|-------------|
| 1 | 2016-01-01 00:00:00 | 2016-06-01 12:00:00 | member |
|----|---------------------|---------------------|-------------|
// members
|----|
| id |
|----|
| 1 |
|----|
私はメンバーのupdatedAtプロパティをデバッグするとき、私は値が
2016-06-01 12:00:00
に対応するDateTimeオブジェクトであることを期待
ではなく、その日の日付...
はロードを継承することも関係していますか? どこから来たのかわかりません。
愚かな質問...なぜあなたは '$これを返します;'あなたのコンストラクタで? – yivi