에 가입하고 간단한 가입해야 어떤 문제가 있어요문제가 테이블 내가 교리 2.1 교리 1.2에서 마이그레이션하고
이것은 내 첫 번째 테이블 :
/**
* Model_WBS
*
* @Table(name="WBS")
* @Entity
*/
class Model_Wbs
/**
* @var integer $id
*
* @Column(name="id", type="integer", length=8)
* @Id
* @GeneratedValue(strategy="SEQUENCE")
* @SequenceGenerator(sequenceName="wbs_seq_seq", allocationSize=1, initialValue=1)
*/
public $id;
.
.
.
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @OneToMany(targetEntity="Model_WbsFund", mappedBy="id")
* @JoinColumn(name="id", referencedColumnName="wbs_id")
*/
public $wbsfunds;
그리고 이것은 내 두 번째 여기에 테이블
/**
* Model_WbsFund
*
* @Table(name="WBS_FUNDS")
* @Entity
*/
class Model_WbsFund
/**
* @var integer $id
*
* @Column(name="id", type="integer", length=8)
* @Id
* @GeneratedValue(strategy="SEQUENCE")
* @SequenceGenerator(sequenceName="wbs_funds_seq_seq", allocationSize=1, initialValue=1)
*/
public $id;
/**
* @var integer $wbs_id
*
* @Column(name="wbs_id", type="integer", length=8)
*/
public $wbs_id;
.
.
.
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ManyToOne(targetEntity="Model_Wbs", inversedBy="wbs_id")
* @JoinColumn(name="wbs_id", referencedColumnName="id")
*/
public $WBS;
그리고 내 간단한 테스트입니다
$testEntity = Model_Wbs::find(7185);
foreach($testEntity->getwbsfunds() as $wbsfundobj){
print("<br/>");
print($wbsfundobj->FUND->getFundCode()." -- ".$wbsfundobj->WBS->getWbs());
}
,536,
그래서 나는 처음 검색 한 wbs와 관련된 wbsfunds 테이블의 자금 코드와 wbs를 볼 것으로 예상됩니다. (나는 실제로 WBS id 7185와 관련된 자금을 얻는지를 확인하기 위해 WBS-> getWbs()를 사용했다.)
대신 모든 wbs_funds 레코드가 표시됩니다. 내가 생성 된 쿼리 문 교리를 인쇄하고 그것은 올바른 아니에요
SELECT t0.id AS ID1, t0.wbs_id AS WBS_ID2, t0.fund_id AS FUND_ID3, t0.wbs_id AS WBS_ID4, t0.fund_id AS FUND_ID5 FROM WBS_FUNDS t0
흥미로운 점은 wbsfundobj-> WBS-> getWBS을처럼 wbsfundobj-> 자금 지원이 사이의 링크> geFundCode는() (, 좋은 작품이다), WBS에서 WBS_FUNDS로 연결되는 링크가 잘못되었습니다.
공개 속성 대신 보호 된 속성을 사용하는 것이 좋습니다. http://stackoverflow.com/questions/4090609/how-can-public-fields-break-lazy-loading-in-doctrine-2 – Florian