0
나는 대일 모노 방향 관계로 2 개 간단한 테이블을했습니다 :교리와 참여 결과 유형
class Event extends BaseEvent
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @ORM\ManyToOne(targetEntity="Rposition")
* @ORM\JoinColumn(name="owner", referencedColumnName="id",onDelete="CASCADE", nullable=false )
**/
private $owner;
....
및 소유자 필드 클래스의 기원 :
class Rposition
{
/**
* @var integer
*
* @ORM\Column(name="id", type="string", length=36)
* @ORM\Id
* @ORM\GeneratedValue(strategy="UUID")
*/
private $id;
/**
*
*
* @ORM\Column(name="scenario", type="string", length=255, nullable=false)
*/
private $scenario;
두 클래스를 갖는
public function findAllByScenario($scenario) {
$q = $this->getEntityManager()->createQuery("SELECT e , r.scenario , r.id
FROM LapoMymeBundle:Event e
JOIN LapoMymeBundle:Rposition r
WITH e.owner = r.id
WHERE r.scenario = :scenario
ORDER BY e.start ASC, e.end ASC
")->setParameter('scenario', $scenario);
try {
return $q->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
0 : 우측 게터/세터와 __toString()
은이 같은 쿼리를 구현해야합니다
- 조인을 만들고 결과를 돌려 보내는 올바른 방법입니까?
- 개체 배열에서 필드를 가져 오는 올바른 방법은 무엇입니까? 그런
뭔가는 다음과 같습니다
$events=$this->getDoctrine()->getManager()
->getRepository('LapoMymeBundle:Event')->findAllByScenario($scenario);
$outputUsersArray = Array();
foreach($events as $event)
{
$eventArray = Array();
$eventArray[JSONResponseFields::KEY_ID] = $event->getId();
$eventArray[JSONResponseFields::KEY_NAME] = $event->getOwner()->getId();
$outputEventsArray[] = $eventArray;
} ....
상승 오류가 좋아 :
는FatalErrorException: Error: Call to a member function getId() on a non-object in.....
검색된 모든 이벤트에 소유자가있는 것은 아닌지 가능한가요? '$ event-> getOwner()'가'null' 인 경우처럼? –
아니요, nullable = false 속성이 설정 됨 – JahStation