[英]Doctrine 2 One-To-Many retrieving many side returns an empty collection
我正在開發一個使用與准則2集成的Zend Framework 1.12的項目。我在上述項目中遇到了雙向一對多關系。 與我的問題有關的兩個實體是團隊和玩家。 一個團隊可以有很多球員。
團隊實體:
namespace Entities;
use Doctrine\Common\Collections\Collection,
Doctrine\Common\Collections\ArrayCollection;
/**
* @Entity(repositoryClass="Repositories\TeamRepository")
* @Table(name="team")
*/
class Team extends Entity{
/**
* @Column(type="string", length=255)
*/
protected $name;
/**
* @OneToMany(targetEntity="Player", mappedBy="team")
*/
protected $players;
public function __construct() {
$this->players = new ArrayCollection();
}
public function getName(){
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getPlayers() {
return $this->players;
}
和玩家實體:
namespace Entities;
/**
* @Entity(repositoryClass="Repositories\PlayerRepository")
* @Table(name="player")
*/
class Player extends Entity{
public function __construct() {
}
/**
* @Column(type="string", length=255)
*/
protected $name;
/**
* @ManyToOne(targetEntity="Team", inversedBy="players")
* @JoinColumn(name="team_id", referencedColumnName="id")
*/
protected $team;
public function getName(){
return $this->name;
}
public function setName($name) {
$this->name = $name;
return $this;
}
public function getTeam() {
return $this->team;
}
public function setTeam($team) {
$this->team = $team;
return $this;
}
}
例如,現在在我的玩家控制器中,我可以檢索一個玩家並獲取球隊名稱
$oPlayer = $this->_em->find('Entities\Player', $player_id);
$teamname = $oPlayer->getTeam()->getName();
這按預期工作,我成功獲得了球員團隊的名稱。 但是,另一種方法不起作用。 我無法找回指定球隊的所有球員
$oTeam = $this->_em->find('Entities\Team', $team_id);
$oPlayers = $oTeam->getPlayers();
當我var_dump這個結果看起來像
object(Doctrine\ORM\PersistentCollection)#238 (9) {
["snapshot":"Doctrine\ORM\PersistentCollection":private]=>
array(0) {
}
["owner":"Doctrine\ORM\PersistentCollection":private]=>
object(Entities\Team)#195 (7) {
...
}
注意,似乎建立了一個persistenCollection,但是該數組為空。 我已經廣泛閱讀了該學說手冊,並在谷歌上搜索了一下,現在茫然了。
還有沒有錯誤消息的事實,我很難解決這個問題。 任何指針都將受到歡迎。
這個問題已經解決。 我一直在為后代試圖解決這個問題,但是得出的結論是我不再擁有原來懷疑存在錯誤的文件。 我設法得到了另一個項目的工作副本。 通過蠻力'diff'-ing和替換代碼,我將持久性集合的空數組的錯誤跟蹤到我的bootstrap和resources / doctrine.php配置文件中,不幸的是我沒有了,因此無法確認這一點。 令人尷尬的是,在仍以string(4)返回“團隊”的情況下(如評論中所述),我終於發現這僅僅是由於die()導致了,我將其放入了理論庫文件中而忘記了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.