В моем проекте laravel я пытаюсь показать локатор карт Google, существуют различные виды услуг, каждая из которых может быть доступна или недоступна в различных клиниках в разных местах. Я пытаюсь позвонить мне ajax Контроллер, передавая службу для получения информации о клини c и местоположении.
Проблема в том, что если у Clini c A есть служба X и служба Y в местоположении X, то он получает информацию о Clin c A, множественная раз.Я хочу показать сведения о клинике c только один раз.
Ниже мой код
public function mapService(Request $request)
{
$postdata = Request::all();
// Start XML file, create parent node
$dom = new \DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
$services_id = isset($postdata['id'])? $postdata['id']:'';
$apiKey = $postdata['apikey'];
if( $services_id ) {
$loc_services = Clinic::select('*')
->join('locations', 'locations.clinicID', '=', 'clinics.clinicID')
->join('location_services', 'location_services.locationID', '=', 'locations.locationID')
->join('services', 'services.serviceID', '=', 'location_services.serviceID')
->whereIn('services.serviceID',$services_id)
->where('clinics.api_key','=',$apiKey)
->distinct()
->get();
}else {
$loc_services =Clinic::select('*')
->join('locations', 'locations.clinicID', '=', 'clinics.clinicID')
->where('clinics.api_key','=',$apiKey)
->get();
}
foreach ($loc_services as $loc_service) {
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("id", $loc_service->locationID);
$newnode->setAttribute("locationName", $loc_service->locationName);
$newnode->setAttribute("locationAddress1", $loc_service->locationAddress1);
$newnode->setAttribute("locationCity", $loc_service->locationCity);
$newnode->setAttribute("locationState", $loc_service->locationState);
$newnode->setAttribute("locationZip", $loc_service->locationZip);
$newnode->setAttribute("locationLat", $loc_service->locationLat);
$newnode->setAttribute("locationLong", $loc_service->locationLong);
$newnode->setAttribute("serviceName", $loc_service->serviceName);
$newnode->setAttribute("clinicName", $loc_service->clinicName);
$newnode->setAttribute("distance", $loc_service->distance);
$newnode->setAttribute("cname", $loc_service->clinicName);
$newnode->setAttribute("clinicFname", $loc_service->clinicFname);
$newnode->setAttribute("clinicLname", $loc_service->clinicLname);
$newnode->setAttribute("clinicAddress", $loc_service->clinicAddress);
$newnode->setAttribute("clinicCity", $loc_service->clinicCity);
$newnode->setAttribute("clinicPhone", $loc_service->clinicPhone);
$newnode->setAttribute("clinicstate", $loc_service->clinicState);
$newnode->setAttribute("cliniczip", $loc_service->clinicZip);
$newnode->setAttribute("clinicemail", $loc_service->clinicEmail);
}
echo $dom->saveXML();
//$view = \View::make('api.getwazemap', ['maplocservices'=>$loc_services]);
}