У меня есть отношение ко многим в моем приложении laravel.Модель Competition
принадлежит ToMany Location
и наоборот.
Теперь я пытаюсь предоставить функциональность, позволяющую добавить существующие места в соревнование.
$competition = Competition::where('id','=', $request->input('contestId'))->firstOrFail();
$locations = $competition->locations;
$locationNames = [];
foreach ($locations as $location) {
$locationNames[] = $location->name;
}
if (!in_array($request->input('locationList'), $locationNames)) {
$locationId = Location::where('name','=', $request->input('locationList'))->firstOrFail()->id;
$competition->locations()->attach($locationId);
}
Мне нужно проверитьГде у конкурентов уже есть место, поэтому я храню данные о соревнованиях внутри $competition
.После этого, если местоположение не было найдено, я присоединяю его к соревнованию.
Проблема заключается в количестве запущенных запросов;один для данных соревнования, один для местоположения, чтобы получить его идентификатор, когда он не был найден внутри местоположений соревнования, и один для хранения данных при присоединении.
Это возвращает ошибку: «Превышено максимальное время выполнения 60 секунд»
Как правильно это сделать?Чтобы свести к минимуму количество необходимых запросов.
Заранее спасибо