2017-01-25 2 views
-1

** ОБНОВЛЕНИЕ 2 *Как получить данные в Symfony

В моем проекте Symfony у меня есть таблица с именем satelliteImage. В этой таблице есть два атрибута: широта и долгота. Я хочу получить запись, используя эти два значения.

/** 
    * @Route("/displayByNumber/{latitude}/{longitude}", name="satellite_images_display_latlon") 
    */ 
    public function displayByLatLonAction($latitude,$longitude) 
    { 
     $satelliteImage=$this->getDoctrine() 
      ->getRepository('AppBundle:satelliteImage') 
      ->findOneBy(array('latitude'=>$latitude,'longitude'=>$longitude)); 

     $picture=base64_encode(stream_get_contents($satelliteImage->getImage())); 

     return $this->render('satelliteImages/display.html.twig',array(
      'satelliteImage' => $satelliteImage, 
      'picture'=>$picture 
     )); 

    } 

например: - широта = +6,43435564545, долгота = 78,456575545

Я хочу, чтобы получить все записи, чьи широта и долгота меньше указанных выше значений. Я попытался это, но она ничего не возвращает

$query = $repository->createQueryBuilder('image') 
      ->where('image.latitude< :nelatitude') 
      ->andWhere('image.longitude< :nelongitude') 


      ->setParameters(array(
       'nelatitude'=> $nelatitude, 
       'nelongitude'=> $nelongitude, 

      )) 
      //->orderBy('p.price', 'ASC') 
      ->getQuery(); 
+0

Не используйте '%', если это не запрос 'LIKE'. Вам нужно изучить базовый sql. – goto

+0

@goto Я обновил его, но все равно не получаю никакой ценности. Могу ли я дать float или мне нужно преобразовать его в строку? –

+0

Запрос выглядит нормально, вы уверены, что у вас есть хорошие данные в базе данных? – goto

ответ

4
$qb = $em->getRepository('AppBundle:satelliteImage'); 
    $satelliteImage = $qb->createQueryBuilder('s') 
      ->where('s.latitude LIKE :latitude') 
      ->orWhere('s.longitude LIKE :longitude') 
      ->setParameter('latitude', $latitude. '%') 
      ->setParameter('longitude', $longitude. '%') 
      ->getQuery() 
      ->getOneOrNullResult(); 

Если вы хотите, чтобы найти записи, которые должны быть запущены с теми же значениями для обоих параметров широты и долготы. Вы должны заменить или где угодно и где угодно.

+0

Привет, спасибо за быстрый ответ. Я обновил свой вопрос. Если у вас есть знания на языке запросов Doctrine, вы можете мне помочь –

0

Являются ли широта и долгота хранимыми как поплавки?

чем я хотел бы попробовать:

$qb = $em->createQueryBuilder(); 
$sImage = $qb->select('image') 
      ->from('AppBundle:satelliteImage', 'image') 
      ->where($qb->expr()->lt('image.longitude', ':lon')) 
      ->andWhere($qb->expr()->lt('image.latitude', ':lat')) 
      ->getQuery() 
      ->setParameter('lon', $longitude) 
      ->setParameter('lat', $latitude) 
      ->getOneOrNullResult(); 

Предполагая, что вы предоставляете $ широту и долготу $ также, как поплавки.

Смежные вопросы