У меня есть FrontEndController
, который возвращает все конференции в представление.
class FrontEndController extends Controller
{
public function index(){
return view('home')
->with('conferences', Conference::orderBy('created_at','desc')->take(8)->get());
}
В представлении у меня есть часть, в которой я хочу перечислить все города, существующие для существующих конференций.Например, если в базе данных есть 2 конференции и одна конференция имеет город Ньюкасл, а другая конференция имеет города Лидс, которые я хочу показать в этом списке Ньюкасл и Лидс.
<ul>
@foreach($conferences as $conf)
<li>
<a class="">{{$conf->city}}</a>
</li>
@endforeach
</ul>
Проблема с этим кодомнапример, если в городе Ньюкасл 5 конференций, он появляется 5 раз в Ньюкасле, но должен появляться только один раз.Вы знаете, как правильно решить эту проблему?
Может быть, в контроллере у меня может быть что-то вроде:
->with('conferences', Conference::orderBy('created_at','desc')->distinct()->get());
Но это нормально, чтобы оба
->with('conferences', Conference::orderBy('created_at','desc')->take(8)->get());
а также
->with('conferences_cities', Conference::orderBy('created_at','desc')->distinct()->get());
Есть много запросов нет?Или нормально?И если есть много конференций, таких как thounsands, может быть, медленно, чтобы получить все отдельные города конгрессов, как это.