0

簡単なクエリがあります

$query = $em->createQuery(''
            . 'SELECT  c.id, c.firstname, c.lastname, coun.country '
            . 'FROM OandPboBundle:Clients c '
            . 'JOIN OandPboBundle:Countries coun WITH coun.id = c.country '
            . 'WHERE c.id = ?1'
            )
                ->setParameter(1, $id)
                ->setMaxResults(1);
    $result = $query->getResult();

ご覧のとおり、Countries エンティティと一対一の関係を持つ Clients エンティティです。したがって、クライアント テーブルに country_id フィールドがあります。ただし、country は null フィールドです。country は必須ではないため、country_id フィールドは null である可能性があります。

そのため、クエリを実行すると、国がない場合 (NULL)、クエリは NO LINE を返します。左結合が存在しないためです。そして、国がある場合はもちろん一行返します。

国がなくてもクエリが CLIENT 行を返すようにするにはどうすればよいですか?

みなさん、よろしくお願いします

CLIENTS エンティティを配置する場合

class Clients
{
    /**
     * @ORM\OneToOne(targetEntity="OandP\boBundle\Entity\Countries", cascade={"persist"})
     * @ORM\JoinColumn(nullable=true)
     */
    private $country = null;


    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
}

そして COUNTRIES エンティティ

class Countries
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="code", type="string", length=2)
     */
    private $code;

    /**
     * @var string
     *
     * @ORM\Column(name="country", type="string", length=255)
     */
    private $country;
4

0 に答える 0