我使用的連接表的值通過主義去取結果有困難。我目前正在爲一個客戶端編寫一個客戶關係管理系統,該系統用任務和用戶實施項目學說使用連接表中返回結果不工作的Symfony2
我的結構如下:
用戶表 - 包含所有用戶。 任務表 - 包含任務的一個項目 user_task表名單 - 即決定哪些用戶可以執行哪些任務的連接表。
我創建了一個連接表在我的實體,像這樣:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Task", inversedBy="user")
* @ORM\JoinTable(name="user_task",
* joinColumns={
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="task_id", referencedColumnName="id")
* }
*)
*/
protected $task;
在我的任務實體:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", mappedBy="task")
* @ORM\JoinTable(name="user_task")
*/
private $user;
我的問題是,對CRM的前端時, admin會從下拉列表中更改任務,然後輪詢數據庫以獲取能夠執行該任務的用戶列表。但是因爲user_stage表本身並不是一個實體,所以我不知道如何將它合併到我的教條queryBuilder中。
我使用本機查詢,其中$任務id在從控制器傳遞嘗試:
$qb = $this->createNativeQuery('SELECT user.name FROM user JOIN user_task ON user_task.user_id = user.id WHERE user_task.task_id = '.$taskId);
$result = $qb->getResult();
但我只是得到以下錯誤:
Undefined method 'createNativeQuery'. The method name must start with either findBy or findOneBy!
我很少使用原生查詢,所以我我不知道我在這裏做錯了什麼。有沒有什麼辦法可以在不使用NativeQuery的情況下執行我需要的查詢,並且通過引用來自用戶和任務實體的某種方式訪問連接表?
謝謝 邁克爾
或做$這個 - > getEntityManager() - > createNativeQuery(); – Cerad
對不起 - createNativeQuery調用在我的repo中稱爲findByStageId()的方法中。我原來的查詢是'$ QB = $這個 - > createQueryBuilder( 'U') - >從( 'user_stage', '我們') - >選擇( 'U', '我們') - >在哪裏(」 us.stage_id =:stageId') - > setParameter('stageId',$ stageId);'但它表示user_stage不存在。 –
好吧,使用getEntityManager() - > createNativeQuery()使用結果集映射方法工作 - 但它返回空白結果,即使當我直接對我的數據庫運行相同的查詢時,它也會返回結果.... –