Laravel雄辩的归档表

时间:2018-06-12 16:06:55

标签: laravel eloquent

我有两个具有相同架构的表。

TABLE: items, items_archive

+-------------+-------------------
| partno |qty | brand|| category |
+--------------------------------+
|        |    |      |           |
|        |    |      |           |
|        |    |      |           |
+--------+----+------+-----------+

有没有办法创建一个可以同时从两个查询的雄辩模型?

Item :: where('brand','acer')=>将查询将执行像union这样的事情。

1 个答案:

答案 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);

希望这有帮助!