Есть таблица.
id city_id region_id
1 2 3
2 3 3
3 1 3
4 5 2
5 5 2
В функцию приходят city_id
2 и 3
Как быстро определить есть ли у них общий регион?
В другой ситуации если прийдет city_id
2 и 5 например, то мне нужно будет проверить если у них общий регион, если нет, то создать новую запись с другим регион_айди.
Пока максимум чего получилось добиться этого
function check(int $first_city, int $second_city)
{
$first_city_arr = Table::where('city_id', $first_city)->get();
foreach($first_city_arr as $first){
$check_region = Table::where('city_id', $second_city)->where('region_id', $first->region_id)->first();
if($check_region){
return 'error';
}
}
}
Если не хотите сильно нагружать бд, то можете попробовать сделать так. Получаем коллекцию городов, и сразу подключаем к ним регионы (внутри используется load, то есть всё в едином запросе к бд). Далее работаем только с коллекцией. Получаем регион для поиска и проверяем есть ли он в коллекции второго города! (Ну раз у Вас есть такая таблица которую Вы предоставили, то связь многие ко многим надеюсь у Вас настроена!) Код похож на Ваш, но с использование коллекций, а не запросов к базе данных.
$cities= Cities::find([$first_city, $second_city])->fresh('regions');
foreach ($cities[0]->regions as $key => $value) {
if (count($cities[1]->regions ->whereIn('id', $value->id))) {
return true;
}
}
return false;
Второй пример использование связующей таблицы как исходную. Работа то же через коллекцию:
$table= DB::table('city_region')
->select()
->whereIn('city_id', [$first_city, $second_city])
->get()
->groupBy('city_id');
foreach ($table[$first_city] as $key => $value) {
if (count($table[$second_city]->whereIn('region_id', $value->region_id))) return true;
}
return false;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не удается задать правильный путь к файлу file(/home/c/cd09875/lenia/public_html/site/sentences/feasibletxt): failed to open stream: No such file or directory in /home/c/cd09875/lenia/public_html/site/main_page
В файле indexphp считываю значения с полей input summa_1 и summa_2, с помощью скрипта calc
Вопрос возможно странный, но все жеИмеем конфиг из документации Symfony 4: