У меня есть две таблицы, cities
и towns
.Запросить две таблицы и объединить результаты на основе created_at
Что мне нужно сделать, это запросить эти две таблицы, объединить их результаты и упорядочить их по столбцам created_at
. Кроме того, мне нужно ограничить его до 25 результатов. Мне также нужно как-то отличить, какая запись принадлежит cities
и принадлежит towns
, когда вы их показываете на мой взгляд.
Это то, что у меня есть на данный момент, но я не думаю, что это правильный способ сделать это:
$cities = City::orderBy('created_at', 'DESC')
->get();
$towns = Town::orderBy('created_at', 'DESC')
->get();
$results = array_merge($cities->toArray(), $towns->toArray());
usort($results, function($a, $b)
{
return $a['created_at'] < $b['created_at'];
});
return $results;
Проблема с этим состоит в том, что она не ограничивает его в общей сложности 25 результатов. Я также не уверен, что это лучший способ сделать это.
Вторая проблема, которую мне нужно решить, - показать результаты на моем представлении. Мне нужен способ отличить, какая запись принадлежит той таблице.
На мой взгляд, у меня есть что-то вроде:
@foreach ($results as $result)
@if (CHECK IF RESULT IS CITY)
@else (CHECK IF RESULT IS TOWN)
@endif
@endforeach
Как я могу проверить, какая запись принадлежит к какой таблице?
Есть ли какое-либо отношение между городом и городом? – prateekkathal
Единственное отношение состоит в том, что стол «города» имеет столбец «city_id», если город близок или находится в более крупном городе. –