2014-10-16 84 views
0

我有一個非常簡單的數據庫表來存儲廣告。請注意,下面是我的文件的簡短形式,我離開了附加字段。Zend Framework 2:Doctrine 2查詢生成器閱讀表與多對一的關係

廣告表

  • ID
  • advert_title
  • advert_text
  • advert_user_id

我已經創建了一個廣告實體:

class Advert 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer", nullable=false) 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $id; 

/** 
* @var string 
* 
* @ORM\Column(name="advert_title", type="string", length=255, nullable=true) 
*/ 
private $advertTitle; 


/** 
* @var string 
* 
* @ORM\Column(name="advert_title", type="text", length=255, nullable=true) 
*/ 
private $advertText; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="adverts") 
* @ORM\JoinColumn(name="advert_user_id", referencedColumnName="id") 
*/ 
private $user; 

    /** 
* Set user 
* 
* @param \Advert\Entity\User $user 
* @return Advert 
*/ 
public function setUser(\Advert\Entity\User $user = null) 
{ 
    $this->user = $user; 

    return $this; 
} 

/** 
* Get user 
* 
* @return \Advert\Entity\User 
*/ 
public function getUser() 
{ 
    return $this->user; 
} 

我現在試圖讀出所有具有特定用戶ID的廣告。所以一個簡單的:

Select * From advert Where advert_user_id = '10' 

因此,我創建了一個存儲庫文件與以下查詢。

public function findAdvertsByUser($userID) 
{ 

    $userID = 18; // static for testing 

    $query = $this->_em->getRepository($this->getEntityName())->createQueryBuilder('a') 
     ->where('a.user=:userid') 
     ->setParameter('userid', $userID) 
     ->getQuery()->getResult(); 

// Below to check query and parameters used:  
    $sql=$query->getSQL(); 
    $parameters=$query->getParameters(); 
    echo $parameters; 

網站崩潰,我已經檢查使用什麼參數的用戶ID的結果是: 主義\ COMMON \收藏\ ArrayCollection的@ 000000004a00fe4400000000f5af5615

我太初學者明白是怎麼回事這裏錯了。有人可以幫助並給我一個提示嗎?非常感謝你提前。

回答

0

你忘了寫實體的完整路徑註釋

* @ORM\ManyToOne(targetEntity="User", inversedBy="adverts") 

固定:

* @ORM\ManyToOne(targetEntity="\Advert\Entity\User", inversedBy="adverts") 
+0

感謝您的回覆,可惜這並沒有解決問題。實體本身正在工作,在另一個位置我可以調用Userdate等這很好,問題是,我不能簡單地添加用戶ID到我的WHERE子句,因爲它使用Doctrine \ Common \ Collections \ ArrayCollection @ 000000004a00fe4400000000f5af5615而不是簡單用戶ID作爲參數。 – Luka 2014-10-17 11:09:00