我有两个具有相同架构的表。
TABLE: items, items_archive
+-------------+-------------------
| partno |qty | brand|| category |
+--------------------------------+
| | | | |
| | | | |
| | | | |
+--------+----+------+-----------+
有没有办法创建一个可以同时从两个查询的雄辩模型?
Item :: where('brand','acer')=>将查询将执行像union这样的事情。
答案 0 :(得分:2)
你应该能够采取这样的方法:
$a = Item::where('brand', 'acer');
$b = ItemArchive::where('brand', 'acer');
$results = $a->union($b)->get();`
在此,我们使用搜索查询创建2个模型,但不执行它们。最后,我们union
将它们放在一起,get()
结果。然后,您可以遍历$results
数组以获取所有数据。
或者,您可以在Item
模型中隐藏所有这些逻辑:
public function retrieveAllWithArchive($brand)
{
return $this->where('brand', $brand)->union((new ItemArchive)->where('brand', $brand))->get();
}
然后,从以下任何地方调用它:
$results = (new Item)->retrieveAllWithArchive($brand);
希望这有帮助!