我想知道是否有人可以帮助这个Doctrine查询.
基本上,我的查询不返回未设置外键的行或NULL.我想返回所有行.
这是2个架构
项目
class Items{
/**
* @var integer $id
*
* @Column(name="id", type="integer", nullable=false)
* @Id
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
/**
* @var integer $type
*
* @ManyToOne(targetEntity="Types")
*
*/
private $type;
}
Run Code Online (Sandbox Code Playgroud)
类型
class Types{
/**
* @var integer $id
*
* @Column(name="id", type="integer", nullable=false)
* @Id
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $name
*
* @Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
}
Run Code Online (Sandbox Code Playgroud)
以及以下DQL查询
SELECT i.id, i.name, t.name as type FROM entity\Items i, entity\Types t WHERE i.type=t.id (OTHER CONDITIONS...)
Run Code Online (Sandbox Code Playgroud)
上面的查询不返回type外键中没有值的行.
是否有可能返回这些行?
先感谢您...
尝试LEFT JOIN:
SELECT i.id, i.name, t.name as type FROM entity\Items i LEFT JOIN i.type t
Run Code Online (Sandbox Code Playgroud)
无论是否存在匹配的类型,这将返回左侧的所有内容(Items).