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

问题描述 投票:0回答:1

让我解释一下我是如何制造事物的(也许不是最好的方法)。我想加入我的StoreSchedule实体(该实体包含三重关系:store(我在其中存储有关地址,名称,我的商店的图片的所有信息),days(一周中的7天)和Schedules(日程表)(仅字符串,例如“ 09:00-22:00')。

[为了结合这3个实体,我制作了StoreSchedule,在其中涉及这3个信息时,它具有三重关系。也许我的解释不太好,让我向您展示一些屏幕。

我已经尝试对存储库中的QueryBuilder进行的操作:

https://imgur.com/a/bE52iBH

我如何在StoreSchedule表中构建事物:

https://imgur.com/a/6m7YkhI

我的时间表表:

https://imgur.com/a/75bRriS

天数表包含一周中的7天。也许很明显,也许没有。

所以这就是问题,我无法弄清楚该如何满足需要:一个从Store获取所有内容并加入ID = Store.ID的StoreSchedule的查询

我想从商店获取日期和带有ID的时间表。

我可以使用查询生成器吗?

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

最诚挚的问候!

ps:希望我让自己足够清楚..

sql symfony doctrine
1个回答
0
投票

您使它太复杂了。您可以清除天表和StoreSchedule。只需在Store和(Store)Schedule之间建立多对一关系。在您的时间表表中添加一列“天”。如果存储日期,则可以使用一个短整数。参见php的date function

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

    public function getAllContentStoreAndSchedule()
    {
        return $this->createQueryBuilder('st')
            ->leftJoin('st.schedule', 'sc')
            ->addSelect('sc')
            ->orderBy('st.name', 'ASC')
            ->addOrderBy('sc.day', 'ASC')
            ->getQuery()
        ;
    }
© www.soinside.com 2019 - 2024. All rights reserved.