Я работаю над проектом, в котором между двумя таблицами существует отношение многие ко многим: первая таблица - это таблица городов, а вторая - таблица контрольных точек.
В городе много контрольно-пропускных пунктов, и контрольно-пропускные пункты могут принадлежать многим городам.
До сих пор я создал новую таблицу с именем checkpoint_city, содержащую checkpoint_id и city_id ..
Таким образом, у города A есть точки x, Y, но у города B есть X, Z
Теперь я хочу выбрать единственные контрольные точки, которые принадлежат городу A и B вместе, то есть X ..
Мой код до сих пор:
$checkpoints = CheckPoint::select('*')->where('type', 'n')->where('checkpoints.active', 1);
if(! empty($request->city_ids)) {
$cities=explode(",",$request->city_ids);
$checkpoints = $checkpoints->crossJoin('checkpoint_city','checkpoints.id','=','checkpoint_city.checkpoint');
$checkpoints = $checkpoints->crossJoin('cities','cities.id','=','checkpoint_city.city')->whereIn("cities.id",$cities);
for($i=0; $i<count($cities); $i++){
$checkpoints = $checkpoints->where("cities.id",$cities[$i]);
}
$checkpoints = $checkpoints->groupBy('checkpoints.id');
}
Но это не сработало для меня, любая помощь?