Laravel красноречивый с архивной таблицей - PullRequest
0 голосов
/ 12 июня 2018

У меня есть две таблицы с одинаковой схемой.

TABLE: items, items_archive

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

Есть ли способ создать красноречивую модель, которую я могу использовать для одновременного запроса к обеим?

Item ::where ('brand', 'acer') => который будет запрашивать что-то вроде union.

1 Ответ

0 голосов
/ 12 июня 2018

У вас должен быть такой подход:

$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);

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...