0

我正在使用 laravel/lumen 框架。假设你有书柜;每个书柜都有很多架子;每个书架都有很多书。我想用他们的书架和书柜拿到所有属于我的红书,但“顺序相反”。我想列出书柜当且仅当它们有我的红书,所有书架上都有我的红书(同样只有这些书)和我所有的红书。在尝试对项目进行分组和谷歌搜索后,我得到了以下代码:

...
return Bookcase::where('state', 'open')
    ->whereHas('shelves.books', function ($query) use ($identity) {
        $query->where('id_owner', $identity)
            ->where('color', "red");
    })
    ->with(['shelves' => function ($q) use ($identity) {
        $q->whereHas('books', function ($query) use ($identity) {
            $query->where('id_owner', $identity)
                ->where('color', "red");
        });
    }])
    ->with(['shelves.books' => function ($query) use ($identity) {
        $query->where('id_owner', $identity)
            ->where('color', "red");
    }])
    ->get();

问题是这样的:我得到了所有红书所在的书柜(没关系),但我也得到了书柜的所有架子(不仅是需要的架子)而且我不想要这种行为,我只想要那些用红皮书……</p>

  • 书柜 1:
    -> 书架 1 - 我的红书 1,我的红书 2
    -> 书架 2 - 没有我的红书!
  • 书柜 2 ...

有什么建议如何让它工作吗?

4

0 回答 0