Laravel Collection()vs collect()

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

我有一系列存储估计信息的数据库表。当设置了一定的周长时,我试图从所有数据库表返回所有数据。

收藏

        $estimateItems = new Collection();
    $estimateItems = $estimateItems->merge( $this->getBoxVent() );
    $estimateItems = $estimateItems->merge( $this->getCoatings() );
    $estimateItems = $estimateItems->merge( $this->getCounterFlashing() );
    $estimateItems = $estimateItems->merge( $this->getDripEdge() );
    $estimateItems = $estimateItems->merge( $this->getFasteners() );
    $estimateItems = $estimateItems->merge( $this->getHeadwallFlashing() );
    $estimateItems = $estimateItems->merge( $this->getHipcap() );
    $estimateItems = $estimateItems->merge( $this->getIceShield() );
    $estimateItems = $estimateItems->merge( $this->getPipeFlashing() );
    $estimateItems = $estimateItems->merge( $this->getRidgecap() );
    $estimateItems = $estimateItems->merge( $this->getRidgeVentilation() );
    $estimateItems = $estimateItems->merge( $this->getSheathing() );
    $estimateItems = $estimateItems->merge( $this->getShingles() );
    $estimateItems = $estimateItems->merge( $this->getSidewallFlashing() );
    $estimateItems = $estimateItems->merge( $this->getSkylights() );
    $estimateItems = $estimateItems->merge( $this->getStarterShingle() );
    $estimateItems = $estimateItems->merge( $this->getTearOff() );
    $estimateItems = $estimateItems->merge( $this->getUnderlayment() );
    $estimateItems = $estimateItems->merge( $this->getValleyMetal() );

enter image description here

和Collect()

$collectedItems = collect([
        $this->getBoxVent(),
        $this->getCoatings(),
        $this->getCounterFlashing(),
        $this->getDripEdge(),
        $this->getFasteners(),
        $this->getHeadwallFlashing(),
        $this->getHipcap(),
        $this->getIceShield(),
        $this->getPipeFlashing(),
        $this->getRidgecap(),
        $this->getRidgeVentilation(),
        $this->getSheathing(),
        $this->getShingles(),
        $this->getSidewallFlashing(),
        $this->getSkylights(),
        $this->getStarterShingle(),
        $this->getTearOff(),
        $this->getUnderlayment(),
        $this->getValleyMetal(),
    ]);

enter image description here

在此示例中,只有4个数据库表具有与此“估计”有关的数据。理想情况下,将有1个或全部具有数据。

为什么Collection最多只返回3,而即使它们为空,collect也将它们全部返回?

我做错什么了,当数据库中有4个或更多时,$estimateItems = new Collection();只返回3吗?

laravel laravel-6
1个回答
0
投票

您传递给collect()的是要作为集合“项目”的数组。合并时,实际上是将集合的当前项目与一组新项目合并。如果要合并到主集合中的集合中没有项目,则没有任何内容可以合并到主集合中。因此,如果您尝试合并的所有这些Collections仅合并了3个项目,则仅合并了3个项目。

© www.soinside.com 2019 - 2024. All rights reserved.