簡體   English   中英

Doctrine 2一對多檢索多方返回空集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM