RoundMatch.php私は区別エンティティに関連するエンティティに参加するにはどうすればよいsymfonyの教義は、弁別列
/**
* @ORM\Entity(repositoryClass="MyApp\MyBundle\Repository\RoundMatchRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"team_round_match" = "TeamRoundMatch", "player_round_match" = "PlayerRoundMatch"})
* @ORM\Table("my_round_match")
*/
abstract class RoundMatch
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="match_date", type="datetime")
*/
private $matchDate;
がすることを企業に関連するでしょうか? 区別されたテーブルの列に直接アクセスして結合を作成することはできません。
区別されたテーブルの列にアクセスして結合を作成することはできません。 子供エンティティを弁別者のエンティティに参加させるにはどうすればよいですか?私が作成した
は次のように結合します
RoundMatchRepository.php
public function getMatchesWithNoResultsSubmitted()
{
$qb = $this->createQueryBuilder("rm");
$qb->leftJoin("rm.round", "rnd")
->leftJoin("rnd.group", "sg")
->leftJoin("sg.server", "ss")
->leftJoin("ss.stage", "ts")
->leftJoin("ts.tournament", "t")
->leftJoin("MyAppMyBundle:PlayerRoundMatch", "prm", "WITH", "rm.id = prm.id")
->leftJoin("prm.player1", "p1")
->leftJoin("prm.player2", "p2")
->leftJoin('p1.gameProfiles',"gp1")
->leftJoin('p2.gameProfiles',"gp2")
->leftJoin('p1.gameProfiles', 'gp1', "WITH", $qb->expr()->andX(
$qb->expr()->eq('t.game', 'gp1.game'),
$qb->expr()->eq('prm.player1', 'gp1.player')
))
->leftJoin('p1.gameProfiles', 'gp2', "WITH", $qb->expr()->andX(
$qb->expr()->eq('t.game', 'gp2.game'),
$qb->expr()->eq('prm.player2', 'gp2.player')
));
return $qb->getQuery()->getResult();
}
を私は小枝に結果オブジェクトを使用すると、彼らはオブジェクトの関係を介して接合されていないので、私は返されたオブジェクト内のエンティティに入社取得することはできません。 ディスクリミネータを介して1対1で結合されているため、オブジェクト関係は作成されていません。
[Doctrine 2 - where句でのdiscriminatorカラムの使い方](https://stackoverflow.com/questions/5988636/doctrine-2-how-to-use-discriminator-column-in-where-句) – LBA
あなたの質問をもっと見る。個人的には、私はテーブルの継承があなたの要件に対する答えだとは思わない。試合には、おそらく日付付きの独自のレコードが必要です。そして、単純な関係は、、、<->、 'team'のようになります。 –