Laravel Отчетливый запрос не работает в моем проекте - PullRequest
1 голос
/ 30 мая 2020

В моем проекте 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]);

    }

1 Ответ

0 голосов
/ 30 мая 2020

вы применяете «отдельный» ко всем своим результатам ... это было бы неэффективно .. вы должны применять «отдельный» только к таблице клиник

попробуйте изменить это на:

$loc_services = Clinic::select('clinics.*').....

... должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...