Orm 原则3:一对一单向关系不';t返回所有字段

Orm 原则3:一对一单向关系不';t返回所有字段,orm,doctrine,Orm,Doctrine,我有两个实体:论文和DoList 每一篇论文都属于0篇或1篇论文。因此,我们有一个单向的一对一的关系,从杜立斯特到论文。这是一篇论文: class Thesis { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue * @var int */ protected int $thesisID; 和DoList: /**

我有两个实体:论文DoList

每一篇论文都属于0篇或1篇论文。因此,我们有一个单向的一对一的关系,从杜立斯特到论文。这是一篇论文:

class Thesis
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     * @var int
     */
    protected int $thesisID;
和DoList:

    /**
     * @ORM\OneToOne(targetEntity="Thesis")
     * @ORM\JoinColumn(name="thesisID", referencedColumnName="thesisID", nullable=true)
     */
    protected $thesisID;
当然,我减少了课程,只展示了重要的部分

据我所知@ORM\JoinColumn应连接DoList表和DoList表 多利斯特。塞西德和论文。塞西德

我可以在这个关系中持久化sesid但是当从DoList中选择所有值时,我无法检索sesid的值它总是空的

编辑:


列名的两边都必须是seid。

错误在于我在使用查询生成器时没有连接表。 我认为,当使用查询生成器执行查询并从表中选择所有行时,将读取我在模型上指定的关系,并自动执行联接查询

注意:当您在模型上指定该选项时,条令不会自动联接表。您需要在QUERYBUILDER上执行连接功能。

这就是它最终的工作原理。(我刚刚添加了加入选项。)

$qb->select(['u', 'c'])
            ->from('ThesisNET\Models\DoList', 'u')
            ->join('u.thesisID', 'c')
            ->where('u.instructor = ?1')
            ->setParameter('1', $username);