对于递归$ query-> with,使用相同的性能展平数据

时间:2017-11-01 15:14:12

标签: laravel-5.5

我使用的是Laravel 5.5.13。

感谢来自SO的优秀成员的精彩帮助,我现在通过这样做获得嵌套(和重复)数据:

public function show(Entity $entity)
{
    return $entity->with([
        'comments' => function($query) {
            $query->with([
                'displayname',
                'helpfuls' => function($query) {
                    $query->with('displayname');
                }
            ]);
        },
        'thumbs' => function($query) {
            $query->with('displayname');
        }
    ])->firstOrFail();
}

这给了我这样的示例数据:https://gist.githubusercontent.com/blagoh/ee5e70dfe35aa5c68b2d445c63887aaa/raw/a0612fb770a27eaacfbb1e87987aa4fd8902a8a3/nested.json

但是我想把它弄平:https://gist.github.com/blagoh/7076be06c400d04941a0593267e11e81 - 看看我们看到变化的版本差异:

https://gist.github.com/blagoh/7076be06c400d04941a0593267e11e81/revisions#diff-cb567797700e4d4b63b106653162c671R15

我们看到第15行现在是"helpful_ids": []并且只有一组ID,然后所有displaynameshelpfuls都移到了第45行和第78行的数组顶部。

是否可以展平这些数据,同时保持相同的查询性能(或更好)?

0 个答案:

没有答案