Doctrine 2 で 1 対 1 の自己参照関係を実装しようとしています。したがって、私のエンティティ Membro_model は次のとおりです。
<?php
/**
*
* @Entity
* @Table(name="tb_membro")
*/
class Membro_model
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="IDENTITY")
*/
public $id = 0;
/**
* @Column(type="string", columnDefinition="VARCHAR(50) NOT NULL")
*/
public $nome = 0;
/**
* @Column(type="string", columnDefinition="VARCHAR(50) NOT NULL")
*/
public $email = 0;
/**
* @Column(type="string", columnDefinition="VARCHAR(12) NOT NULL")
*/
public $login = 0;
/**
* @OneToOne(targetEntity="Membro_model")
* @JoinColumn(name="patrocinador_id", referencedColumnName="id")
**/
public $patrocinador;
}
エンティティを永続化できます。データの復元に問題があります。フィールド patrocinador_id が NULL の場合、リカバリに問題はありませんが、フィールドが NULL でない場合、次のエラーが表示されます。
Fatal error: require(): Failed opening required
'application//models/proxies\__CG__Membro_model.php'
(include_path='.;C:\php\pear') in C:\Program Files\EasyPHP-DevServer-
13.1VC9\data\localweb\eliteapp\application\third_party\DoctrineORM-
2.2.2\libraries\Doctrine\ORM\Proxy\ProxyFactory.php on line 93
findOneBy を使用して回復しようとしています。
$membro = $this->doctrine->em->getRepository('Membro_model')->findOneBy(array('login' => $login));