Laravel 5.1 如何连接两个对象集合

Laravel 5.1 How to join two collections of objects

所有仓库表都有不同的列数。所以我不能在查询中使用联合。但是我讨厌这种方式来加入这个对象集合。 有更好(更清晰)的方法吗? 谢谢 :)

public function index()
{

    $warehouses1  = Farm_warehouse::all();
    $warehouses2  = Butchery_warehouse::all();
    $warehouses3  = Grape_warehouse::all();
    $warehouses4  = Iron_warehouse::all();
    $warehouses5  = Rice_warehouse::all();
    $warehouses6  = Silk_warehouse::all();
    $warehouses7  = Wood_warehouse::all();

    $warehouses2 = $warehouses1->merge($warehouses2);
    $warehouses3 = $warehouses2->merge($warehouses3);
    $warehouses4 = $warehouses3->merge($warehouses4);
    $warehouses5 = $warehouses4->merge($warehouses5);
    $warehouses6 = $warehouses5->merge($warehouses6);
    $warehouses = $warehouses6->merge($warehouses7);


    return view('warehouses.index', compact('warehouses'));

}

这可能不是您正在寻找的改进,但您不能像这样将其链接在一起吗?

public function index()
{

    $warehouses  = Farm_warehouse::all();
    $warehouses->merge(Butchery_warehouse::all());
    $warehouses->merge(Grape_warehouse::all());
    $warehouses->merge(Iron_warehouse::all());
    $warehouses->merge(Rice_warehouse::all());
    $warehouses->merge(Silk_warehouse::all());
    $warehouses->merge(Wood_warehouse::all());


    return view('warehouses.index', compact('warehouses'));

}

我认为这更容易阅读,但您可以将其提取到基础仓库模型中,或者尝试深入研究集合 class 以获得更多成果。希望这有帮助。