Sql 三重关系QueryBuilder symfony(我到底在做什么?)

Sql 三重关系QueryBuilder symfony(我到底在做什么?),sql,symfony,doctrine,Sql,Symfony,Doctrine,让我解释一下我是如何做事情的(顺便说一句,也许不是最好的方式)。 我想加入我的StoreSchedule实体(它包含一个三重关系:store(我在这里储存有关地址、名称、店铺图片的所有信息)、days(一周中的7天)和Schedule(只有像'09:00-22:00'这样的字符串) 为了结合这3个实体,我制作了StoreSchedule,它有一个三重关系,在这3个信息之间,我可能解释得不好,让我给你看一些屏幕 我已尝试在我的存储库中使用QueryBuilder执行的操作: 我是如何在Store

让我解释一下我是如何做事情的(顺便说一句,也许不是最好的方式)。 我想加入我的StoreSchedule实体(它包含一个三重关系:store(我在这里储存有关地址、名称、店铺图片的所有信息)、days(一周中的7天)和Schedule(只有像'09:00-22:00'这样的字符串)

为了结合这3个实体,我制作了StoreSchedule,它有一个三重关系,在这3个信息之间,我可能解释得不好,让我给你看一些屏幕

我已尝试在我的存储库中使用QueryBuilder执行的操作:

我是如何在StoreSchedule表中构建内容的:

我的时间表:

Days表包含一周中的7天。这可能是显而易见的,也可能不是

问题是,我不知道如何进行我需要的查询:一个从Store获取所有内容并加入StoreSchedule的查询,其中ID=Store.ID

我想用商店的ID获取天数和日程安排

我可以用查询生成器来做吗

我必须修改我的数据库吗?我的关系好吗

致以最良好的祝愿


ps:希望我说得够清楚。

你把它弄得太复杂了。你可以清除days表和StoreSchedule。只需在Store和(Store)Schedule之间建立一个多对一关系。在Schedule表中添加一列“day”。如果你存储了一天的数字,一个短整数就可以了。请参阅php

对于您的查询(第一个链接),您不需要WHERE子句。条令将自动为您加入相关数据

    public function getAllContentStoreAndSchedule()
    {
        return $this->createQueryBuilder('st')
            ->leftJoin('st.schedule', 'sc')
            ->addSelect('sc')
            ->orderBy('st.name', 'ASC')
            ->addOrderBy('sc.day', 'ASC')
            ->getQuery()
        ;
    }

非常感谢,伊玛,试试看!