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;
兩個班正確的getter/setter和__toString()
我要實現這樣的查詢:
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;
}
}
- 它是進行連接並從中發回結果的正確方法嗎?
- 從對象數組中獲取字段的正確方法是什麼?
這樣的事情是:
$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'? –
不,可爲空=設置爲false屬性 – JahStation