2017-01-25 19 views
-1

**アップデート2 *Symfonyでデータを取得する方法

私のSymfonyプロジェクトでは、「satelliteImage」という名前のテーブルがあります。この表には、緯度と経度という2つの属性があります。これらの2つの値を使用してエントリを取得したいとします。

/** 
    * @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

Iは、その緯度と経度上記値未満であるすべてのエントリを取得します。私はこれを試してみましたが、あなたはパラメータの緯度と経度の両方に同じ値で開始する必要がありますレコードを検索したい場合は、何も

$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私はそれを更新しましたが、それでも価値がありません。私は浮動小数点を与えることができますか、それを文字列に変換する必要がありますか? –

+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(); 

あなたは$緯度や山車なども$経度を提供と仮定。

関連する問題