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();

如您所见,它是一个 Clients 实体,与 Country 实体具有一对一关系。所以我的客户表中有一个 country_id 字段。但是国家是一个空字段,国家不是必需的,所以 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