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
我太初學者明白是怎麼回事這裏錯了。有人可以幫助並給我一個提示嗎?非常感謝你提前。
感謝您的回覆,可惜這並沒有解決問題。實體本身正在工作,在另一個位置我可以調用Userdate等這很好,問題是,我不能簡單地添加用戶ID到我的WHERE子句,因爲它使用Doctrine \ Common \ Collections \ ArrayCollection @ 000000004a00fe4400000000f5af5615而不是簡單用戶ID作爲參數。 – Luka 2014-10-17 11:09:00