我有一个简单的查询
$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;